为什么我只能删除项目的最后一个元素

浸礼会

我正在尝试使用以下代码删除HTML中的数组元素:

function displayBasket() {
    let basketItems = getBasket();
    const basket = document.getElementById("panier");
    let totalPrice = document.getElementById('totalPrice');
    totalPrice.innerHTML = ``
    if (basketItems.length === 0) {
        basket.innerHTML = `<p>Votre panier est vide</p>`;
    } else {
        const basketTable = document.getElementById("basketTable");
        let total = 0;
        basketItems.forEach((item, index) => {
            const cameraId = item.id;
            const quantity = item.quantity;
            ajax({ url: `/${cameraId}`, method: 'GET', status: 200, data: null })
                .then((result) => {
                    const cameraDetails = JSON.parse(result);
                    basketTable.innerHTML += `
                <tr>
                    <td><img id="imageProduct" src="${cameraDetails.imageUrl}"></td>
                    <td id="descriptionProduct">${cameraDetails.name}</td>
                    <td id="priceProduct">${(cameraDetails.price / 100).toFixed(2)}</td>
                    <td id="quantity">${quantity}</td>
                    <td><button id="deleteButton-${index}">Supprimer</button></td>
                </td>
                </tr>`
                    buttonProduct = document.getElementById(`deleteButton-${index}`);
                    buttonProduct.addEventListener('click', () => {
                        deleteProduct(cameraId);
                        basketTable.innerHTML = ``;
                        displayBasket();
                    })
                    total += cameraDetails.price * quantity
                    let totalPrice = document.getElementById('totalPrice');
                    totalPrice.innerHTML = `<p>Prix total : ${(total / 100).toFixed(2)}</p>`;
                });
        })

但是问题是我只能删除最后一个项目。

因此,如果我在数组中有1个项目就可以了,但是我有更多项目我需要先删除最后一个以删除其他项目等。

帮我吧:)

mplungjan

您在模板字符串中定义了一个事件侦听器。那将永远不会被执行

另外,您需要唯一的ID,但是如果您委托则实际上并不需要它

document.getElementById("basketTable").addEventListener("click",function(e) {
  const tgt = e.target;
  if (tgt.classList.contains("deleteButton")) {
    tgt.closest("tr").remove();
  }
})

使用

<td><button class="deleteButton">Supprimer</button></td>

如果您需要将ID传递到某处,请更改为

<td><button data-id="${cameraId}" class="deleteButton">Supprimer</button></td>

并有

document.getElementById("basketTable")
  .addEventListener("click",function(e) {
  const tgt = e.target;
  if (tgt.classList.contains("deleteButton")) {
    tgt.closest("tr").remove();
    deleteProduct(tgt.dataset.id)
  }
})

看起来您每次删除某些内容时都会从服务器中读取篮子...-听起来不太有效

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我只能在while循环之外获取数组的最后一个元素

为什么我只能引用传递给onClickListener的TextView数组中的最后一个元素

为什么我只能在 swift 5 的表视图中看到数组的最后一个元素?

为什么拼接只删除最后一个元素?

为什么 pd.series(cell_list) 会删除我的 cell_list 的最后一个元素?

为什么我只能从此“ for”语句中得到一个元素?

为什么最后一个项目计数没有过滤删除?

Python 列表有 3 个元素,但我只能访问最后一个元素

为什么我的IdentitySet只显示最后一个项目?

为什么我在每个循环中只添加最后一个元素?

为什么我的算法不检查链表的最后一个元素?

为什么 np.sum 只显示我的 np.array 的最后一个元素?

为什么我的二分搜索实现找不到最后一个元素?

为什么我的列表视图总是删除列表中的最后一个视图

为什么我只能使用 .FILTER 删除我的 LOCAL STORAGE 的最后一项

$ {@:-1}为什么不返回$ @的最后一个元素?

为什么arrayList不迭代最后一个元素?

为什么要打印最后一个元素

为什么最后一个元素重复?

更改项目元素和离子清单中最后一个项目的颜色

JS中的油门:为什么在控制台中我只能看到第一个和最后一个输出?

具有相同类的几个元素。但我只能得到第一个,为什么?

Bash我不能打印数组的所有元素,而只能打印最后一个

为什么我的select元素开头有一个空项目?

为什么我只能插入一个数字而不是一个名字?

Swift-为什么我的JSON对象元素仅添加最后一个数组元素?

为什么是一个项目的删除在动态阵列O(n)的时间复杂性端?

为什么我的链表的delete_last_element删除第一个元素?

如果我想要,我如何删除我输入的最后一个元素,所有元素?