带参数和innerHTML的事件监听器只能工作一次
我有一个脚本可以向页面添加一些文本,如下所示:
document.body.innerHTML += '<input type="image" id="alertMeID" style="position:fixed;top:0;left:0" //src="http://i55.tinypic.com/2nly5wz.gif" ///>';
document.body.innerHTML += '<input type="image" id="alertMeID2" style="position:fixed;top:100;left:100" //src="http://i55.tinypic.com/2nly5wz.gif" />';
document.getElementById('alertMeID').addEventListener('click', function(){do_this("some text")}, false);
document.getElementById('alertMeID2').addEventListener('click', function(){do_this("another text")}, false);
function do_this(sendingParameter){document.body.innerHTML += sendingParameter;}
第一次单击其中一个图像时,它可以正常工作。但是,如果我点击第二次,它就根本不起作用。
如何解决这个问题呢?
I have a script that adds some text to page, like so:
document.body.innerHTML += '<input type="image" id="alertMeID" style="position:fixed;top:0;left:0" //src="http://i55.tinypic.com/2nly5wz.gif" ///>';
document.body.innerHTML += '<input type="image" id="alertMeID2" style="position:fixed;top:100;left:100" //src="http://i55.tinypic.com/2nly5wz.gif" />';
document.getElementById('alertMeID').addEventListener('click', function(){do_this("some text")}, false);
document.getElementById('alertMeID2').addEventListener('click', function(){do_this("another text")}, false);
function do_this(sendingParameter){document.body.innerHTML += sendingParameter;}
The first time I click on one of the images it works properly. But, if I click a second time, it doesn't work at all.
How to solve this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当您使用
innerHTML
时,元素的内容会被重新解析。元素被删除并重新创建,这又会删除事件处理程序。使用 DOM 操作会更好。演示:http://jsfiddle.net/mdtSY/
When you use
innerHTML
the element's content gets reparsed. The elements are removed and recreated, which in turn removes the event handler. Much better would be to use DOM manipulation.Demo: http://jsfiddle.net/mdtSY/
您可能还想看看: insertAdjacentHTML
它位于 mdn:
You might also want to take a look at: insertAdjacentHTML
It states at mdn: