【发布时间】:2021-12-14 09:04:10
【问题描述】:
在这段代码中,我使用了一个函数,该函数用 JSON 文件中的数据填充每个表行。我在表格的每一行附近添加了一个按钮。当我单击每个按钮时,我希望它执行一个功能(即使现在只是一个简单的警报)。这是我的代码:
function fillRow(employee){
var data = "";
var buttonCars = document.createElement("button");
var showCars = buttonCars.innerHTML = "show cars";
buttonCars.addEventListener("click", function() {
alert('example alert');
});
data = "<tr>" +
"<td>" + employee.name + "</td>" +
"<td>" + employee.surname + "</td>" +
"<td>" + employee.email + "</td>" +
"<td>" + "<button>" + showCars + "</button>"
+ "</td>" + "</tr>";
return data;
}
现在,当我单击按钮时没有任何反应,我不明白为什么?
【问题讨论】:
-
你在写
document.createElement("button"),还手动写"<button>" + showCars + "</button>"。因此,您正在创建两个按钮,一个以编程方式创建,一个在模板中。您正在将单击处理程序附加到以编程方式创建的处理程序上,该处理程序仅存在于内存中,并未添加到 DOM 中。您正在单击没有click侦听器的模板按钮,因此没有任何反应。
标签: javascript html-table dom-events addeventlistener removeeventlistener