过去3天我试图谷歌通过。
我有一个运行的脚本,可以在google api地图上随机生成线条。我添加了一个事件监听器来根据单击的行来提醒值。目前,由于使用了密钥,警报仅弹出数组中的最后一个值。
function setLines(json) {
var data = JSON.parse(json);
for (var i = 0; i < data.lines.length; i++) {
var line = data.lines[i];
var loc1 = line.Location1;
var loc2 = line.Location2;
var name = line.name;
comment[name] = {"comment":line.Comment};
var endpoints = [myObject[loc1], myObject[loc2]];
createline[name] = new google.maps.Polyline({path:endpoints, strokeColor: line.Color, strokeWeight: line.Weight, zIndex: line.ZIndex, map: map });
google.maps.event.addListener(createline[name], 'click', function() {alert(comment[name]); });
lines.push(createline[name]);
}
}
如何在生成期间将注释[name]的实际值填充到警报中,以便在单击时不调用它?
答案 0 :(得分:0)
click事件处理程序使用变量name
,但每个事件处理程序都没有自己的变量,它们都共享相同的变量。在调用事件处理程序时,变量已更改为其最终值。
您可以使用函数包装器为循环中的每次迭代创建变量的副本:
(function(name){
google.maps.event.addListener(createline[name], 'click', function() {alert(comment[name]); });
})(name);