for (var i=0; i<Gmaps.map.markers.length; i++) {
google.maps.event.addListener(Gmaps.map.markers[i].serviceObject, 'click', function(object){
alert(Gmaps.map.markers[i]);
});
};
所以,这经历了循环。显然,我正在使用谷歌地图API。地图上的每个标记都附有警报。警报显示undefined
。如果我将其切换为alert(Gmaps.map.markers[0]);
或任何其他适用的数字,它会向我显示Object对象。如果我然后拨打alert(Gmaps.map.markers[i].id);
之类的话,我会得到我正在寻找的价值,但显然,每个标记都会给出相同的警报。
为什么回调中无法识别i
?
答案 0 :(得分:1)
你必须将i私有化:
for (var i=0; i<Gmaps.map.markers.length; i++) {
(function(i){
google.maps.event.addListener(Gmaps.map.markers[i].serviceObject, 'click', function(object){
alert(Gmaps.map.markers[i]);
});
}(i));
};