gpt4 book ai didi

for循环内的Javascript变量范围

转载 作者:可可西里 更新时间:2023-11-01 01:56:55 26 4
gpt4 key购买 nike

如何在下面的 for 循环中保持对 i 变量的访问?我正在努力学习,而不仅仅是得到答案,所以一些解释会很有帮助。谢谢!

var el, 
len = statesPolyStrings.length;

for (var i = 0; i < len; i++) {
el = document.getElementById(statesPolyStrings[i]);

google.maps.event.addDomListener(el, 'mouseover', function() {
$("#"+statesPolyStrings[i]).addClass("highlight");
statesPolyObjects[i].setOptions({ strokeWeight: '2' });
});
}

最佳答案

您的所有回调共享相同的 i 变量。
当事件处理程序实际运行时,i 位于数组末尾之后。

您需要将循环体包装在一个以i 为参数的自调用函数中。
这样,每次迭代都会获得自己的、不变的 i 变量。

例如:

for (var i = 0; i < statesPolyStrings.length; i++) {
(function(i) {
...
})(i);
}

关于for循环内的Javascript变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10954053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com