Javascript for loop为链接分配放置指针而不是变量的副本

Javascript for loop为链接分配放置指针而不是变量的副本,javascript,pointers,Javascript,Pointers,这有多烦人 我正在使用addEventListener为我的每个链接分配一个javascript函数 循环遍历每个链接,分配递增的变量x 但实际上,当你点击链接时,它不会提醒x的值,而是提醒x的最终值;i、 它只是将一个指针指定给x,而不是复制它 在这里查看操作:单击任何链接都会发出警报“4”。Grr 还是不行 在javascript中,对于(var x…)转换,var x被移动到函数的开头。因此,goToSite中的x指的是您在每次迭代中增加的全局x,请阅读关于闭包的内容以了解发生闭包的原因

这有多烦人

  • 我正在使用addEventListener为我的每个链接分配一个javascript函数
  • 循环遍历每个链接,分配递增的变量x
  • 但实际上,当你点击链接时,它不会提醒x的值,而是提醒x的最终值;i、 它只是将一个指针指定给x,而不是复制它
  • 在这里查看操作:单击任何链接都会发出警报“4”。Grr


    还是不行

    在javascript中,对于(var x…)转换,var x被移动到函数的开头。因此,goToSite中的x指的是您在每次迭代中增加的全局x,请阅读关于闭包的内容以了解发生闭包的原因…

    查找“JavaScript闭包”goToSite中的参数需要更改为x,或者警报中的x需要更改为where。感谢店面-现在已更改。但问题仍然存在。谢谢。是的,我知道它每次都指向同一个变量,这将是for循环的最后一个值。但我正在寻找一个简单的解决方案,我可以在将来使用。为所有链接定义一个“onclick”函数,让它只提醒“this”(点击的链接)的id如何?我很想这样做,但不知道如何做
        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)})
        }
    
    function goToSite(whichOne){
        return function(){
            alert("This would take you to " + whichOne + ".com");
        }
    }