Javascript 如何在动态元素上添加onclick处理程序?

Javascript 如何在动态元素上添加onclick处理程序?,javascript,event-handling,Javascript,Event Handling,以下是我的JS代码的重要部分: function createClose() { var cButton = document.createElement("img"); cButton.src = "close.gif"; cButton.style.cursor = "pointer"; cButton.onclick = closeWindow; document.getElementById("my_window").appendChild(cButton); }

以下是我的JS代码的重要部分:

function createClose() {
  var cButton = document.createElement("img");
  cButton.src = "close.gif";
  cButton.style.cursor = "pointer";
  cButton.onclick = closeWindow;

  document.getElementById("my_window").appendChild(cButton);
}

function closeWindow() {
  document.getElementById("my_window").style.display = "none";
}
创建并追加图像,但单击图像时不会调用onClick事件。我还尝试使用匿名函数,但也没有成功

不,我不打算使用jQuery(尽管我相信它更容易)

这个问题几乎是“”的重复 作为另一种方式,我看到了使用
input.setAttribute('onclick','yourFunction();')太多,但不能保证它工作

input.setAttribute('onclick','handleClick();');
这个问题几乎是“”的重复
作为另一种方式,我看到了使用
input.setAttribute('onclick','yourFunction();')太多,但不能保证它工作

第3-5行中的
img
应该是
cButton
?JQuery解决方案可以吗?第3-5行中的
img
应该是
cButton
?JQuery解决方案可以吗?我可以在将事件处理程序附加到文档之前添加它吗?正如我所说的,匿名函数在这种情况下不起作用。看看前面提到的和链接的问题,它们在附加它之前会这样做,就像你说的那样(:希望它能帮助setAttribute()路由对我有效,现在我只需要检查它的跨浏览器兼容性…试用后请告诉我,这样我就不必亲自测试跨浏览器的有效性了,谢谢。
input
在第1行之后指的是什么?第2行和问题中的onclick赋值有什么区别?我可以添加事件处理程序b吗在我将其附加到文档之前?正如我所说,匿名函数在这种情况下不起作用。请看一下前面提到的和链接的问题,它们在附加它之前会这样做,就像您所说的(:Hope it helps the setAttribute()路线对我有效,现在我只需要检查它的跨浏览器兼容性…试用后请告诉我,这样我就不必亲自测试跨浏览器的有效性了,谢谢。
input
在第1行之后指的是什么?第2行和问题中的onclick作业有什么区别?
input.setAttribute('onclick','handleClick();');