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

markersusing と呼ばれる関数にプッシュしsetTimeoutているため、しばらくしてからプッシュが行われます。alert(markers)ただし、タイムアウトが発生する前に、すぐに呼び出しています。したがって、その時点で配列は空です。

アップデート:

の最終的な内容を見るにはmarkers、別の が必要ですsetTimeout:

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

スコープに応じて、グローバル マーカーにアクセスするには、 を使用しますwindow.markers

于 2012-10-25T07:39:07.353 に答える