小编典典

操纵innerHTML会删除子元素的事件处理程序吗?

javascript

我有一个非常简单的演示:

function foo() {
    alert('Works!');
}

var inp = document.createElement('input');
inp.onblur = foo;
document.body.appendChild(inp);

如您所见,这可行。(单击输入,然后单击其他位置,将弹出警报。)

但是,如果我将此行添加到JavaScript代码中:

document.body.innerHTML += '<br>';

然后模糊处理程序停止工作(顺便说一句,不会引发任何错误)。

这是为什么?


阅读 374

收藏
2020-05-01

共1个答案

小编典典

是的,当您这样做时:

document.body.innerHTML += '<br>';

您确实在做:

document.body.innerHTML = (document.body.innerHTML + '<br>');

因此,您将完全销毁并重新创建所有内容。

2020-05-01