javascript - 删除一个 Div 会删除其他 div 的 onclick 吗?

标签 javascript onclick

这里有一种奇怪的行为。

(function(){
    var images=document.getElementsByTagName('img');
    for (var i = 0; i < images.length; i++) {
        images[i].parentNode.onclick = function () {
            var embed = "whatever";
            document.body.innerHTML = '<div id="overlay"><div class="game">' + embed + '</div></div>' + document.body.innerHTML;
            document.getElementById('overlay').onclick = function () { this.parentNode.removeChild(this); }
        }
    }
})();

这个offcourse是简化的代码。 单击叠加层后, 覆盖层(和竞赛)被删除。 但图像 onclick 事件不再起作用。 知道为什么会发生这种情况吗?

最佳答案

这是因为以下行:

document.body.innerHTML = '...' + document.body.innerHTML;

在这里,您可以将 HTML 内容直接连接为字符串,并删除绑定(bind)到所有元素(包括图像)的所有事件。

我建议您动态创建覆盖 block 并将其添加到 body 之前,而不是更改 innerHTML 属性。

关于javascript - 删除一个 Div 会删除其他 div 的 onclick 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13653596/

相关文章:

javascript - Jquery - 渲染特殊字符或替换文本

javascript - 帮助将条目插入 Azure DB

java - 如何使用 Intent 打开电子邮件应用程序

javascript - 如何将div转换为输入,然后将输入转换为div(onclick)

javascript - 单击其中一个 li 时,如何减小 li 的宽度?

Javascript 滑动效果onclick

javascript - 动态生成元素时如何避免 ID 冲突

javascript - 如何使用 'usual' JavaScript 语法从字面上创建对象?

javascript - 函数在javascript中被称为非函数

javascript - 为什么我用于更改 (onclick) div 不透明度的 javascript 代码失败?