提醒动态数组javascript

时间:2015-09-12 22:01:43

标签: javascript google-maps

过去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]的实际值填充到警报中,以便在单击时不调用它?

1 个答案:

答案 0 :(得分:0)

click事件处理程序使用变量name,但每个事件处理程序都没有自己的变量,它们都共享相同的变量。在调用事件处理程序时,变量已更改为其最终值。

您可以使用函数包装器为循环中的每次迭代创建变量的副本:

(function(name){
  google.maps.event.addListener(createline[name], 'click', function() {alert(comment[name]); });
})(name);