在eventListener中访问外部变量

时间:2015-05-28 21:22:58

标签: javascript scope event-listener

如果:

    var allBusiness = ["one", "two", "three", "four"]
    for (var i = 0; i < allBusiness.length; i++) {
    document.getElementById(allBusiness[i]).addEventListener("click", function () {
        console.log(allBusiness);
    });
}

这个记录["one", "two", "three", "four"]

但是,我尝试分别记录每个值的以下内容显示undefined

    var allBusiness = ["one", "two", "three", "four"]
    for (var i = 0; i < allBusiness.length; i++) {
    document.getElementById(allBusiness[i]).addEventListener("click", function () {
        console.log(allBusiness[i]);
    });
}

为什么没有记录相应的名字?以及如何实现这一目标?

1 个答案:

答案 0 :(得分:-1)

原因很简单:我不再在你要通过的回调函数的范围内定义。

关于如何,我想一个很好的问题,你想要实现什么?你可以使用它。

var allBusiness = ["one", "two", "three", "four"]
for (var i = 0; i < allBusiness.length; i++) {
    document.getElementById(allBusiness[i]).addEventListener("click", function () {
        console.log(this.id);
    });
}

P.S。注意:我不认为这是解决问题的好方法,但它会得到你想要的东西