0

请给我一些关于这个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);

感谢您的帮助或线索。

4

2 回答 2

1

取决于范围,访问全局标记使用window.markers.

于 2012-10-25T07:39:07.353 回答
1

您正在推送markers一个名为 using 的函数setTimeout,因此推送要等到一段时间后才会发生。但是您会alert(markers)在任何超时发生之前立即致电。所以那个时候数组是空的。

更新:

要查看 的最终内容markers,您需要另一个setTimeout

setTimeout(function() { alert(markers); }, netotal*50);
于 2012-10-25T07:55:05.630 回答