请给我一些关于这个 javascript 问题的线索。 我有一个全局变量标记。并尝试将每个标记推向标记。 但问题是,在推到标记之后。我试图提醒函数内部和函数外部的值。结果完全不同。函数内部的标记为我提供了标记数组,但外部的标记保持为空。为什么我的标记全局变量的值不同?
这是我的代码片段:
for (var i = 0; i < netotal; i++) {
setTimeout(function () {
marker = new google.maps.Marker({
position: pos[iterator],
map: map,
draggable: false,
animation: google.maps.Animation.DROP,
icon: neicon
});
iterator++;
markers.push(marker);console.log(markers);
}, i * 50);
}
alert (markers);
感谢您的帮助或线索。
最佳答案
您正在使用 setTimeout
调用的函数中推送到标记
,因此推送要在一段时间后才会发生。但在发生任何超时之前,您会立即调用 alert(markers)
。所以此时数组为空。
更新:
要查看标记
的最终内容,您需要另一个setTimeout
:
setTimeout(function() { alert(markers); }, netotal*50);
关于Javascript全局变量仅在匿名函数内更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13063771/