为什么点击事件在动态添加的元素上不生效?

芹芹酱~ 阅读 9

我用 JavaScript 动态创建了一些按钮,然后想给它们绑定 click 事件,但点击完全没反应。我试过直接用 element.onclick = ... 的方式,也试过 addEventListener,都不行。

是不是因为这些元素是后来加到页面上的?那该怎么正确绑定事件呢?下面是我现在写的代码:

const btn = document.createElement('button');
btn.textContent = '点我';
document.body.appendChild(btn);

btn.addEventListener('click', () => {
  console.log('clicked!');
});
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
♫秀丽
♫秀丽 Lv1
动态添加的元素要用事件委托。直接在父元素上加事件监听器。
document.body.addEventListener('click', (event) => {
if (event.target.tagName === 'BUTTON') {
console.log('clicked!');
}
});
点赞
2026-03-20 20:46