【发布时间】:2021-08-20 07:56:33
【问题描述】:
在下面的示例代码中,我将onclick 事件处理程序附加到包含文本“foo”的跨度。处理程序是一个匿名函数,会弹出一个alert()。
但是,如果我分配给父节点的innerHTML,则此onclick 事件处理程序将被破坏-单击“foo”无法弹出警告框。
这可以修复吗?
<html>
<head>
<script type="text/javascript">
function start () {
myspan = document.getElementById("myspan");
myspan.onclick = function() { alert ("hi"); };
mydiv = document.getElementById("mydiv");
mydiv.innerHTML += "bar";
}
</script>
</head>
<body onload="start()">
<div id="mydiv" style="border: solid red 2px">
<span id="myspan">foo</span>
</div>
</body>
</html>
【问题讨论】:
-
此问题与“将新字段附加到表单会删除用户输入”问题有关。选择的答案很好地解决了这两个问题。
-
事件委托可以用来解决这个问题。
标签: javascript html innerhtml dom-events