javascript - 删除来自 JS DOM 中输入的 html 表项
问题描述
我在 JS 中删除 html 表中的操作时遇到问题。我试图删除来自输入的表项。没有任何反应。
const name = document.querySelector(".name");
const surname = document.querySelector(".surname");
const age = document.querySelector(".age");
const addBtn = document.querySelector(".addBtn");
const deleteBtn = document.querySelector(".delete");
const tbody = document.querySelector(".tbl");
addBtn.addEventListener("click",addItem);
deleteBtn.addEventListener("click",deleteItem);
function addItem(e){
var html = `<tr>
<td>${name.value}</td>
<td>${surname.value}</td>
<td>${age.value}</td>
<td class="delete">DELETE</td>
</tr>`;
if(name.value === '' || surname.value === '' || age.value === ''){
alert("Warning!!!");
}else{
tbody.innerHTML += html;
}
e.preventDefault();
}
function deleteItem(e) {
if(e.target.className = 'delete'){
e.target.parentElement.remove();
}
}
解决方案
我在这里看到两个问题:
- 事件侦听器被分配给第一个匹配的元素
'.delete'
,而不是所有元素 - 将通过创建的按钮不会将
addItem
侦听器附加到它们
您可以通过使用事件委托来解决这两个问题:将侦听器分配给一个共同的父级:
document.querySelector("table").addEventListener("click", deleteItem)
推荐阅读
- javascript - 内容长度标头与分块上传的请求正文不匹配
- python - 仅当屏幕中出现特定对象时才运行 python 代码
- reactjs - React Redux 中复杂过滤的最佳实践是什么
- networking - Python 中的 TCP Traceroute - 卡住了
- haskell - 实现类型类函数时无法匹配类型错误
- gcloud - 谷歌云笔记本实例运行脚本不在启动中
- python - Pandas:使用嵌入逗号读取 csv
- c# - C# xml 反序列化不会将子元素提取到列表中
- r - 使用数据框列表的公共列创建数据框 - R
- javascript - 找不到问题是快递服务器问题