gpt4 book ai didi

javascript - 事件监听器仅分配给第一个被调用的类

转载 作者:行者123 更新时间:2023-12-03 05:37:39 24 4
gpt4 key购买 nike

我正在尝试将事件监听器添加到适当的 html 元素。

var eventArray = [['scribbler', 'click', addNote], ['checkbox', 'change', strikethrough]];

for(var i=0;i<=eventArray.length; i++){
addEvents(eventArray[i][0], eventArray[i][1], eventArray[i][2]);
}

上面的函数循环遍历提供的数组,并为 addEvents 函数提供正确的参数。

function addEvents(className, event, fn){
var g = document.getElementsByClassName(className);
for(var i=0; i<=g.length; i++){
g[i].addEventListener(event, fn, false);
}
}

这是在 for 循环中调用的 addEvents 函数。它适用于第一次运行,但此后的任何内容似乎都会被忽略。 IE。涂鸦/单击事件监听器已正确应用,但复选框/更改监听器未正确应用。如果我颠倒数组的顺序,那么正确应用的监听器也会翻转。

我尝试在 addEvents 函数末尾努力重置 g 变量,但这似乎不起作用。

document.getElementsByClassName(className).each.addEventListener(event, fn, false);

这似乎不是一个合适的解决方案。

最佳答案

你应该替换<=在您的代码中使用 <因为您可能会遇到类似 Cannot read property addEventListener of undefined 的错误

该更改的原因是,如果您的array比方说,有 3 个元素,它们的索引是: 0, 1, 2 ,和array.length3

<=你的循环将从 0 开始迭代至3包容,给你undefined

关于javascript - 事件监听器仅分配给第一个被调用的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40664657/

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