我再次提出一个奇怪的问题:)我想写一个for
循环,打开具有不同lat和lng值的新窗口。这些是地理坐标。我试过下面的代码。但它不起作用并始终打开openWin(100,20)
我不知道我怎么可能找到一个解决方法。因此,每个建议和提议都是受欢迎的。理想情况下,我还要在第二个循环中检查从-180到180的所有lng值。但由于下面的代码不起作用,我没有尝试实现第二个。
function init() {
var i = 2000;
for(var lat=-90;lat<=90;lat+=10) {
var lng = 20; // -180 --> 180
setTimeout(function(){openWin(lat,lng);}, i);
i+=2000;
setTimeout(function(){closeWin();}, i);
}
}
答案 0 :(得分:1)
由于您的setTimeout()
稍后会运行,lat
的值将是for
循环结束时的值,而不是您想要的值。
您可以使用IIFE闭包来修复它,该闭包捕获变量的值并保留它以供稍后在setTimeout()
中使用:
function init() {
var i = 2000;
for(var lat=-90;lat<=90;lat+=10) {
var lng = 20; // -180 --> 180
(function(lat, lng) {
setTimeout(function(){openWin(lat,lng);}, i);
i+=2000;
setTimeout(function(){closeWin();}, i);
})(lat, lng);
}
}
仅供参考,我们并不清楚您尝试使用i
值做什么。我无法告诉您是否需要在闭包内部或外部,或者您希望它何时增加。还不清楚closeWin()
如何知道要操作哪个窗口。