Javascript 如何在td元素中添加侦听器?

Javascript 如何在td元素中添加侦听器?,javascript,Javascript,为什么侦听器只在一个td上工作 这是你的电话号码 这一行仅适用于一个项目,而注释中的警告适用于所有td项目。我理解您的代码,尽管它有点凌乱,但我不确定是否应该给您一个答案,因为我将以您的代码的方式教您错误的做法。但您想了解的是有关活动授权的信息以下是一些非常好的来源: 注意: 请不要投反对票。我不想对此发表评论,因为读起来不好看。因此,如果有人要提供直接问题的答案,请放心。我只是相信@bip希望了解事件授权 谢谢。因为当您添加带有innerHTML的行时,会销毁附加到其同级的所有事件。因

为什么侦听器只在一个
td
上工作

这是你的电话号码


这一行仅适用于一个项目,而注释中的警告适用于所有
td
项目。

我理解您的代码,尽管它有点凌乱,但我不确定是否应该给您一个答案,因为我将以您的代码的方式教您错误的做法。但您想了解的是有关活动授权的信息以下是一些非常好的来源:

注意:

请不要投反对票。我不想对此发表评论,因为读起来不好看。因此,如果有人要提供直接问题的答案,请放心。我只是相信@bip希望了解事件授权


谢谢。

因为当您添加带有innerHTML的行时,会销毁附加到其同级的所有事件。因此,您添加的每一行都会销毁以前添加的事件。这就是为什么只有最后一个元素有click事件

您应该使用事件委派或使用
document.createElement()和
appendChild()生成行


如果你不先清理这个(乱七八糟的)代码,我几乎可以保证没有人会回答。你也可以考虑将侦听器委派给父元素,并使用事件传播(AkaBuffle)。一个听众比许多听众好。类似的问题:这是一个只有链接的答案。。。请在您的答案中按照网站指南提供代码我很困惑?你要我提供什么。我不是真的在提供答案。但这在评论中看起来并不好。他不必接受我的回答。有人可能会直接给他一个问题的答案。如果你不提供答案,请使用注释块或向OP展示如何使用事件委派,并将其转化为一个正确的答案answer@Edwin你能告诉我你说的代码的开头吗?我刚刚学习了一点关于事件委托的知识,想知道如何在这种情况下应用它吗?代码在哪里?我已经在循环中通过了它,但没有发生任何事情。我需要将行追加到表中
document.getElementById(x).addEventListener("click",showStatusDialog);
First link is by codepen and it says I needed some code so I'm pretending this is code.
//outside the loop
var tbody = document.querySelector("#tfhover tbody");


var tr = document.createElement("tr");
var td1 = document.createElement("td");
td1.innerHTML = json2[i].rank;
var td2 = document.createElement("td");
td2.innerHTML = json2[i].content;
var td3 = document.createElement("td");
td3.innerHTML = json2[i].UID;
td3.id = "uid"+i;
td3.addEventListener("click",showStatusDialog);
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
tbody.appendChild(tr);