ai didi

当第二个项目添加到 div 时,JavaScript 事件处理程序不工作?

转载 作者:行者123 更新时间:2023-11-30 20:01:52 24 4
gpt4 key购买 nike

基本上,当我运行这段代码时,它会向 div 添加一个按钮,当你按下按钮时,它会按预期自行删除。

document.getElementById("inputdiv").innerHTML += '<button type="button" id="remove">X1</button>'
document.getElementById("remove").addEventListener("click", function () {
document.getElementById("remove").remove();
});
<div id="inputdiv"></div>

但是,当您添加两个按钮时,X1 事件处理程序停止工作但 X2 工作正常?

我相信当添加第二个按钮时,它会如何影响第一个按钮事件处理程序,但不确定为什么?

document.getElementById("inputdiv").innerHTML += '<button type="button" id="remove">X1</button>'
document.getElementById("remove").addEventListener("click", function () {
document.getElementById("remove").remove();
});

document.getElementById("inputdiv").innerHTML += '<button type="button" id="remove2">X2</button>'
document.getElementById("remove2").addEventListener("click", function () {
document.getElementById("remove2").remove();
});
<div id="inputdiv"></div>

最佳答案

innerHTML 不会附加而是重新加载完整的 DOM。这就是事件不起作用的原因。您可以使用 insertAdjacentHTML()相反:

document.getElementById("inputdiv").innerHTML += '<button type="button" id="remove">X1</button>'
document.getElementById("remove").addEventListener("click", function () {
document.getElementById("remove").remove();
});

document.getElementById("inputdiv").insertAdjacentHTML('beforeend', '<button type="button" id="remove2">X2</button>');
document.getElementById("remove2").addEventListener("click", function () {
document.getElementById("remove2").remove();
});
<div id="inputdiv"></div>

关于当第二个项目添加到 div 时,JavaScript 事件处理程序不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53298812/

24 4 0
文章推荐: javascript - 如何从特定时间(例如上午 9 点到下午)以分钟为单位开始计时
文章推荐: c# - 检查 ListView 是否为空的最佳方法?
文章推荐: c - 堆栈和堆中的变量
文章推荐: c# - 如何从 NESTED ItemsControl 绑定(bind)到事件的 ItemsControl 项目
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com