gpt4 book ai didi

javascript - 循环内的 addEventListener

转载 作者:行者123 更新时间:2023-11-28 11:35:49 26 4
gpt4 key购买 nike

我不明白为什么 addEventListener 只能在循环之外工作。使用以下代码,我在 JsFiddle ( http://jsfiddle.net/E7gaZ/1/ ) 中创建了示例:

window.addEventListener('load', function (){
document.getElementById('myId').addEventListener(
'click', myHandler, false
);
var myClass = document.getElementsByClassName('myClass');
for(var i=0; i<myClass.length; i++) {
myClass[i].addEventListener("onclick", myHandler, false);
}
});
function myHandler(ev) {
alert(ev.target.innerHTML);
ev.preventDefault();
}

点击“myId”链接时会提醒“myId”并阻止页面重新加载,而其他链接不会调用 myHandler

以下方法似乎运行良好(仍在 window.load 事件 ( http://jsfiddle.net/E7gaZ/2/ ) 内:

document.getElementById('myId').onclick = myHandler;
var myClass = document.getElementsByClassName('myClass');
for(var i=0; i<myClass.length; i++) {
myClass[i].onclick = myHandler;
}

知道为什么吗?

编辑:为什么我要使用 addEventListener 而不是 .onclick =?因为我可以在同一事件上添加多个监听器。

编辑:谢谢你们的解决方案,伙计们。总之,它在 myId 上工作,因为我使用了正确的语法(click),而不在 *myClass 上工作,因为语法错误(onclick)。

最佳答案

我很确定:

myClass[i].addEventListener("onclick", myHandler, false);

需要:

myClass[i].addEventListener("click", myHandler, false);

对我来说,将“onclick”附加为监听器是没有意义的。

关于javascript - 循环内的 addEventListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21554609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com