为什么在我使用 addEventListener 时加载时会发生 "click" 事件?
Why does "click" event happen on load when I use addEventListener?
我使用 document.querySelectorAll() 获取 HTML 文件中所有按钮的 NodeList,然后遍历每个按钮,为每个按钮添加一个事件监听器,以监听对每个按钮的点击.
document.querySelectorAll("button").forEach(node => {
node.addEventListener("click", console.log("Button clicked"));
});
但是,在加载时,所有按钮都被点击了,我不明白为什么会这样。
附加的函数应该是一个处理程序,在需要时由事件侦听器执行。在您给出的示例中, console.log()
在调用 foreach 函数时被调用。
更改您的处理函数以接受参数,然后执行您的 console.log
:
document.querySelectorAll("button").forEach(node => {
node.addEventListener("click", function(ev){ console.log('Clicked'); });
});
为了便于阅读,我在这里使用了 function
,但它可以是任何有效的回调。
https://developer.mozilla.org/en-US/docs/Web/API/EventListener#javascript
我使用 document.querySelectorAll() 获取 HTML 文件中所有按钮的 NodeList,然后遍历每个按钮,为每个按钮添加一个事件监听器,以监听对每个按钮的点击.
document.querySelectorAll("button").forEach(node => {
node.addEventListener("click", console.log("Button clicked"));
});
但是,在加载时,所有按钮都被点击了,我不明白为什么会这样。
附加的函数应该是一个处理程序,在需要时由事件侦听器执行。在您给出的示例中, console.log()
在调用 foreach 函数时被调用。
更改您的处理函数以接受参数,然后执行您的 console.log
:
document.querySelectorAll("button").forEach(node => {
node.addEventListener("click", function(ev){ console.log('Clicked'); });
});
为了便于阅读,我在这里使用了 function
,但它可以是任何有效的回调。
https://developer.mozilla.org/en-US/docs/Web/API/EventListener#javascript