
这段代码首先获取 id 为 main 的 div 元素,然后使用 remove() 方法将其从dom中移除。之后,计数器 counter 的值会根据需要增加或减少,并调用 setup() 函数重新创建 main 元素。这样,modal元素不会被移除,点击事件可以继续有效。
虽然上述解决方案可以解决问题,但代码仍然存在一些可以优化的地方。
以下是优化后的代码示例:
function updatePage(increment) {
let main = document.getElementById("main");
main.remove();
counter += increment;
setUp();
}
function setUp(){
var c = document.getElementById("container");
var d = document.createElement("div");
d.setAttribute("id", "main");
d.innerHTML = counter;
var nxt = document.createElement("button");
var bck = document.createElement("button");
var modalBtn = document.createElement("button");
nxt.innerText = ">";
bck.innerText = "<";
modalBtn.innerText="Show Modal";
// 使用 addEventListener 绑定事件
nxt.addEventListener("click", function() { updatePage(1); });
bck.addEventListener("click", function() { updatePage(-1); });
modalBtn.addEventListener("click", showModal);
d.appendChild(bck);
c.appendChild(d);
d.appendChild(nxt);
d.appendChild(modalBtn);
}
function showModal(){
var m = document.getElementById("modal");
m.style.display = "block";
}
function closeModal(){
var m = document.getElementById("modal");
m.style.display = "none";
}
setUp();HTML代码也需要进行相应的修改:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="tryout.css">
<script src="tryout.js" defer></script>
<title>Document</title>
</head>
<body>
<div id="container">
<div id="modal"><button id="closeButton">Close</button></div>
</div>
<script>
document.getElementById("closeButton").addEventListener("click", closeModal);
</script>
</body>
</html>在这个版本中,updatePage() 函数接受一个参数 increment,用于指定计数器的增量。addEventListener 方法用于绑定事件监听器,使代码更清晰、更易于维护。
立即学习“Java免费学习笔记(深入)”;
当动态更新页面内容时,需要特别注意事件监听器的处理。通过只移除需要更新的元素,并使用 addEventListener 方法绑定事件监听器,可以有效地解决按钮事件失效的问题。同时,优化代码结构可以提高代码的可读性和可维护性。
以上就是JavaScript动态更新页面后按钮事件失效问题及解决方案的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号