这有多烦人? http://jsfiddle.net/b3xyx/
在此处查看操作: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)})
}
我该如何解决这个问题?在这种情况下,有没有办法创建变量的真实副本?
编辑:感谢您提出duplicate,但它似乎并不重复。
^我的更新代码:
function goToSite(whichOne){
return function(){
alert("This would take you to " + whichOne + ".com");
}
}
仍然无效。
答案 0 :(得分:0)
在javascript中,for(var x ...)转换,var x移动到函数的开头。因此,goToSite中的x指的是每次迭代中增加的全局x,读取闭包以了解其发生的原因......