这是我的代码:
<html>
<head>
<script type="text/javascript" language="javascript">
function load() {
div1 = document.getElementById('div1');
div2 = document.getElementById('div2');
function clicky() {
alert('1');
}
div2.addEventListener('click', clicky);
//div1.innerHTML += 'ooooooofdsfdsfdsfdsfdsfsdfdsfdsfdsfdsklfdsjfkldsjfkldsjfldsjfkldsjfkldsjfdskl';
}
</script>
</head>
<body onload="load();">
<div id="div1" style="width : 300px; height : 300px; background-color : red; position : absolute">
<div id="div2" style="width : 20px; height : 20px; background-color : green; position : absolute; right : 5px; top : 5px;">X</div>
</div>
</body>
所以,我在div1中有div2。如果评论字符串确实被评论,一切正常:单击div2会导致警报。但是如果我将divth添加到div1.innerHTML,则事件处理程序不起作用。问题在哪里?
答案 0 :(得分:1)
您的代码
div1.innerHTML += 'ooooooofdsfdsfdsfdsfdsfsdfdsfdsfdsfdsklfdsjfkldsjfkldsjfldsjfkldsjfkldsjfdskl';
实际上意味着
div1.innerHTML = div1.innerHTML + ooooooofdsfdsfdsfdsfdsfsdfdsfdsfdsfdsklfdsjfkldsjfkldsjfldsjfkldsjfkldsjfdskl';
所以从字面意义上讲,你用一个新的字符串覆盖div1的innerHTML,这个字符串会创建一个div2的新对象。因此,您需要在设置innerHTML后添加单击侦听器。