javascript - 循环和函数

标签 javascript arrays loops

我在收集有关单击的事件监听器的信息时遇到问题。

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

myButtonList = document.getElementsByTagName('a');
myAnchorList = [];

for (i=0; i < myButtonList.length;i++) {
    if (myButtonList[i].getAttribute('class') == 'flagged') {
        myAnchorList.push(myButtonList[i]);
    }
}

对于每个 <a>放入myAnchorList数组,我还创建了另一个数组,存储来自同一标签的其他信息(类和其他属性)。

这就是我正在努力的地方。我正在尝试设置一个事件监听器,当这些 <a> 时向我发送回这些信息。正在被点击。但不知何故,我在循环中创建一个函数(用于事件监听器)这一事实破坏了一切。

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

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

相关文章:

循环内的 JavaScript 闭包 – 简单的实际示例

javascript - Angular : pass data from service/factory to controller

javascript - 我的 json 请求不会触发 beforeSend 请求。似乎无法弄清楚为什么

javascript - 如何验证 Ionic 4 应用程序中的 ion-datetime 标签?

javascript - 旨在从数组中删除 NaN 的代码,仍然返回 NaN JS

C 中的常量数组和数组

symfony - Twig,过滤一个循环

php - 循环数据库结果,使用 number_format()

javascript - 切换后无法单击按钮

arrays - 如何在 smarty 模板中追加到多维数组?