0

这有多烦人?http://jsfiddle.net/b3xyx/

  • 我正在使用 addEventListener 为我的每个链接分配一个 javascript 函数。
  • 循环遍历每个链接,分配一个递增的变量 x
  • 但实际上,当您单击链接时 - 不是提醒 x 的值,而是提醒 x 的最终值;即它刚刚分配了一个指向 x 的指针,而不是复制它。
  • 在此处查看实际情况:http: //jsfiddle.net/b3xyx/单击任何链接都会提醒“4”。Grr。

        function goToSite(where){
            alert("This would take you to " + where + ".com")
        }
    
        for(var x=1; x<=3; x++){
            document.getElementById('link'+x).addEventListener('click', function(){goToSite(x)})
        }
    

我该如何解决这个问题?在这种情况下,有没有办法创建变量的真实副本?


编辑:感谢您建议重复,但它似乎不是重复的。

http://jsfiddle.net/aERRE/

^ 我的更新代码:

function goToSite(whichOne){
    return function(){
        alert("This would take you to " + whichOne + ".com");
    }
}

还是不行。

4

1 回答 1

0

in javascript, the for(var x...) transforms,the var x is moved to the begin of the function. and therefor the x in the goToSite refers to the global x you increased in each iteration, read about closures to understand why it happens...

于 2013-02-10T22:43:03.423 回答