簡體   English   中英

如何從用戶創建的列表(購物車)中刪除元素

[英]How do I remove an element from a user created list (shopping cart)

const cartContent = document.querySelector(".cart_content");
.
.
.
addCartItem(item) {
const div = document.createElement('div');
div.classList.add('cart_item');
div.innerHTML = `
    <div class="shop_cart_items_wrapper">
        <span class="remove_item" data-id=${item.id}><i class="fas fa-times"></i></span>
    <div class="shop_cart_items">
        <p class="item_amount">${item.amount}</p>
        <span class="cart_title_text_wrapper"><h4 class="cart_title_text">${item.title}</h4></span>  
        <span class="cart_price_amount_wrapper"><h5 class="cart_price_amount">$${item.price}</h5></span>
    </div>
    <div>
        <div class="inc_dec_amounts_cart">
            <i class="fas fa-chevron-up" data-id=${item.id}></i>
            <i class="fas fa-chevron-down" data-id=${item.id}></i>
        </div>
    </div>
</div>`;
            cartContent.appendChild(div);
}
.
.
.
cartContent.addEventListener("click", event => {
       if (event.target.classList.contains("remove_item")) {
        let removeItem = event.target;
        let id = removeItem.dataset.id;
        cartContent.removeChild.firstElementChild(removeItem.parentElement.parentElement);
        this.removeItem(id);
       }

所以我擁有代碼工作所需的一切。 當我按下“時間”圖標時,我希望從購物車中刪除整個產品項目。 我認為removeItem.parentElement.parentElement不是針對時間圖標。 我該怎么做才能使其瞄准時間圖標並關閉cart_item div?

聽起來您正在嘗試刪除與定義 class remove_item的位置相關的項目(我認為這可能是 X 圖標或其他東西。更好的方法是在父項目本身上定義一個 id,發現通過document.querySelector元素,然后將其刪除。

所以不要有這樣的東西

const div = document.createElement('div');
div.classList.add('cart_item');
div.setAttribute('data-item-id', item.id); // <-- now the cart_item has an id associated to it
div.innerHTML = `
    <div class="shop_cart_items_wrapper">
        <span class="remove_item" data-id=${item.id}><i class="fas fa-times"></i></span>
    <div class="shop_cart_items">

然后你刪除 function 變成

cartContent.addEventListener("click", event => {
       if (event.target.classList.contains("remove_item")) {
        let removeItem = event.target;
        let id = removeItem.dataset.id;
        cartContent.removeChild(document.querySelector(`[data-item-id=${id}`));
        this.removeItem(id);
       }

或類似的東西。 如果您正在尋找有關如何通過您的方法相對獲得此問題的具體答案,那是可能的,但只是為您提供了另一種解決方案的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM