Gru*_*mpy 2 javascript google-maps google-maps-markers
我循环并放置一些标记,但是当我点击标记时,它们都以相同的值响应
这是我的代码
for(a=0; a < prod.length; a++){
// we add marker to map
var myLatlng = new google.maps.LatLng(prod[a]['lat'],prod[a]['lon']);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: prod[a]['name']+" \n"+prod[a]['description'],
icon: image
});
google.maps.event.addListener(marker, "click", function() {
show_details(a);
});
}
Run Code Online (Sandbox Code Playgroud)
函数show_details,a总是具有相同的值
我在这里看了其他的答案,但这并没有解决我的问题.
Kov*_*vge 10
异步编程/脚本编写中的典型问题.该a变量传递,当点击事件运行,因此,那价值是什么,是在后for循环结束.您应该创建一个内部函数作用域,并将值保存a在变量中,该变量仅存在于该作用域中.解决方案:
(function(z){
google.maps.event.addListener(marker, "click", function() {
show_details(z);
});
})(a);
Run Code Online (Sandbox Code Playgroud)
该a变量生活在回调函数之外了.因此,如果您修改a(或for循环修改那个)的值,并且在调用事件处理程序时,它会看到修改后的a.
帮助链接:http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/.
| 归档时间: |
|
| 查看次数: |
5062 次 |
| 最近记录: |