【问题标题】:Javascript onclick notJavascript onclick 不是
【发布时间】:2018-01-11 07:50:33
【问题描述】:

所以我正在使用 javascript 动态创建一个表。

我遍历一个元素数组,并为数组中的每个元素创建一个表格行。
我通过

创建行
let row = document.createElement('tr');

row.onclick = function() {console.log("On Click Working"};

但这对我不起作用。
在循环之外,我使用 jQuery 将 onclick 事件处理程序附加到每一行并且有效。
我只是好奇为什么row.onclick = ... 方法不起作用?
有人对此有解释吗??

【问题讨论】:

  • 显示您的代码,不要将其与文本混在一起。
  • 减去它应该可以工作的错字,我认为我们需要查看更多代码。
  • 调试的第一步,总是破解打开浏览器控制台查找错误。
  • 工作正常jsbin.com/ruvecagavo/edit?html,js,output 调试其余代码

标签: javascript jquery onclick


【解决方案1】:

如果您将“)”放在控制台日志的末尾并修复该语法错误,则可以正常工作。

console.log('hey, im in whatever logic does this creation!');
let row = document.createElement('tr');
row.onclick = function() {console.log("On Click Working")};

row.click();

【讨论】:

  • 我在代码中没有那个语法错误。我还回去粘贴了您在其中输入的确切代码,但仍然无法正常工作。
  • 对不起,我对堆栈溢出很陌生,所以我不熟悉约定。我没有循环内的 row.click() 部分。我想显示所有循环代码,但没有足够的空间来评论它。
  • 哦,我总是打开调试控制台,看不到任何错误,这就是我如此困惑的原因。我有另一个函数,它以同样的方式将事件处理程序附加到表行,并且工作得非常好,这也是我如此困惑的另一个原因。
  • 那么在您的代码中逐字记录上述逻辑,两个控制台日志中的哪一个打印,如果有的话?
  • 只有第一个,每次循环中有新元素时打印。
【解决方案2】:

您是否将该行附加到文档中?
里面有没有内容(所以用户可以点击)?

let row = document.createElement('tr');

row.innerHTML = "<td>Click here</td>";
row.onclick = function() {console.log("On Click Working")};

document.getElementsByTagName("table")[0].append(row);
&lt;table&gt;&lt;/table&gt;

【讨论】:

  • 是的,行中也有 4 个 元素。
  • 好吧...发布所有相关代码,因为没有人可以找到问题的原因。您发布的内容有效。
猜你喜欢
相关资源
最近更新 更多
热门标签