可能重复:
更改 javascript 闭包内的全局变量
我在将数据存储在 javascript 全局数组中时遇到问题。即使我为它分配了一些元素,我也无法弄清楚为什么数组是空的。
基本上我有两个函数:loadMarkers
每当用户单击按钮并从 JSON 中的 url 获取一些信息时调用,解析该数据并将其存储在全局数组中。另一个函数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);
}