重複の可能性:
javascriptクロージャー内のグローバル変数を変更する
javascript グローバル配列にデータを格納する際に問題があります。いくつかの要素を割り当てたにもかかわらず、配列が空である理由がわかりません。
基本的に私は 2 つの関数を持っています:loadMarkers
ユーザーがボタンをクリックし、JSON の URL から情報を取得するたびに呼び出され、そのデータを解析してグローバル配列に格納します。もう 1 つの関数はshowMarkers
、配列を反復処理してすべてのマーカーを表示するだけですが、その配列は空です!
事前に感謝します。
var markers = [];
function loadMarkers(url) {
markers = [];
$.get(url, function(data) {
var json = jQuery.parseJSON(data);
for (var i = 0; i < json.length; i++) {
// parsing json
var lat = json[i].Latitude;
var lng = json[i].Longitude;
var id = json[i].ID;
console.log(id); // this prints with no problems!
// create new marker
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat, lng),
title: id,
html: "<p>" + "Info for container " + id + "</p>"
});
// add marker to markers array
markers.push(markers[i]);
// add info window to marker
google.maps.event.addListener(marker, "click", function() {
infoWindow.setContent(this.html);
infoWindow.open(map, this);
});
}
});
}
function showMarkers() {
for (i = 0; i < markers.length; i++)
console.log(markers); // here I get an empty array!
markers[i].setMap(map);
}