动态生成表格时如何为删除按钮绑定onclick点击事件?
解决动态生成删除按钮的点击事件绑定问题
我来帮你搞定这个动态绑定点击事件的问题~你的代码里有两个关键问题导致事件绑定失败,咱们一步步修复:
问题分析
- 错误的事件绑定方式:你写的
button.span.onclick = "delete()"完全不对——按钮本身没有span属性,而且这种字符串形式的事件赋值在动态创建元素时不适用,正确的做法是直接绑定函数引用。 - 函数名冲突:
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
相关产品推荐
相关产品推荐

