我在收集有关单击的事件侦听器的信息时遇到了麻烦。
我有构建一个数组的此循环:
myButtonList = document.getElementsByTagName('a');
myAnchorList = [];
for (i=0; i < myButtonList.length;i++) {
if (myButtonList[i].getAttribute('class') == 'flagged') {
myAnchorList.push(myButtonList[i]);
}
}
对于每个放入
<a>
数组的myAnchorList
,我还创建了另一个数组,用于存储来自同一标签的其他信息(类和其他属性)。这就是我努力的地方。我正在尝试设置一个eventListener,以便在单击那些
<a>
时将这些信息发送回给我。但是以某种方式,我在一个循环内创建一个函数(用于eventListener)的事实打破了一切。for (i=0; i < myAnchorList.length; i++) {
myAnchorList[i].addEventListener("click", function(i){
console.log(alpha+' - '+beta[i]+" - "+charlie[i]);
});
}
我的值将是
undefined
或其他一些值,与单击的每个按钮相同。 alpha
运行良好,因为它不依赖于循环的任何迭代,但不依赖于其他循环。有人能看到我在做什么错吗?
最佳答案
for (var i = 0; i < myAnchorList.length; i++) {
(function (i) { //Passes i to your function
myAnchorList[i].addEventListener("click", function () {
console.log(alpha+' - '+beta[i]+" - "+charlie[i]);
});
})(i);
}