我在收集有关单击的事件侦听器的信息时遇到了麻烦。

我有构建一个数组的此循环:

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);
}

10-08 02:29