You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

动态生成表格时如何为删除按钮绑定onclick点击事件?

解决动态生成删除按钮的点击事件绑定问题

我来帮你搞定这个动态绑定点击事件的问题~你的代码里有两个关键问题导致事件绑定失败,咱们一步步修复:

问题分析

  1. 错误的事件绑定方式:你写的button.span.onclick = "delete()"完全不对——按钮本身没有span属性,而且这种字符串形式的事件赋值在动态创建元素时不适用,正确的做法是直接绑定函数引用。
  2. 函数名冲突:delete是JavaScript的保留关键字,不能用来命名自定义函数,这会导致语法错误。

修正后的完整代码

JavaScript 部分

var cartItem=[{"id":2,"title":"Mens Casual Premium Slim Fit T-Shirts ","price":22.3,"description":"Slim-fitting style, contrast raglan long sleeve, three-button Henley placket, The Henley style round neckline includes a three-button placket.","category":"men's clothing","image":"https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_.jpg","rating":{"rate":4.1,"count":259}}]

function getcartDetails() {
 document.getElementById("cartItemShow").innerHTML = "";
 for (var get in cartItem) {
 var tr = document.createElement("tr");
 var tdTitle = document.createElement("td");
 var tdImage = document.createElement("td");
 var tdDel = document.createElement("td");
 var img = document.createElement("img");
 var button = document.createElement("button");
 
 img.src = cartItem[get].image;
 img.width = 70;
 tdTitle.innerHTML = cartItem[get].title;
 button.innerText="delete";
 
 // 方式1:直接赋值onclick(简单直接)
 button.onclick = deleteItem;
 
 // 方式2:推荐使用addEventListener(支持绑定多个同类型事件)
 // button.addEventListener('click', deleteItem);
 
 tdImage.appendChild(img);
 tdDel.appendChild(button);
 tr.appendChild(tdTitle);
 tr.appendChild(tdImage);
 tr.appendChild(tdDel);
 document.getElementById("cartItemShow").appendChild(tr);
 }
}

// 重命名函数,避免和JS保留字冲突
function deleteItem(){
 alert("hello")
}

getcartDetails()

HTML 部分(无需修改)

<div class="col-md-3">
 <button class="btn btn-danger w-100" data-bs-toggle="collapse" data-bs-target="#showTable">[<span id="itemCount"></span>] Your cart</button>
 <table class="table collapse" id="showTable">
 <thead>
 <tr>
 <th scope="col">Title</th>
 <th scope="col">Image</th>
 <th scope="col">action</th>
 </tr>
 </thead>
 <tbody id="cartItemShow"></tbody>
 </table>
</div>

额外说明

如果后续需要在删除事件中获取当前点击的商品信息(比如商品ID),可以通过自定义属性来实现,比如:

// 在创建按钮时给按钮添加自定义属性存储商品ID
button.dataset.itemId = cartItem[get].id;

// 在删除函数中获取并使用
function deleteItem(){
 const itemId = this.dataset.itemId;
 alert(`hello, 你要删除ID为${itemId}的商品`);
}

内容的提问来源于stack exchange,提问作者Kumar sunil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 18:08:10