如何在事件监听器中使用局部变量?

时间:2010-11-12 10:25:11

标签: javascript-events google-maps-api-3

我的问题是使用Google Maps API,但我很确定这是一般JavaScript问题。

我有一个定义一系列标记的局部对象数组。处理这些对象没有问题。但我想在我创建的事件处理程序中使用其中一个值,并且在调用事件处理程序时,该值始终为“未定义”。 (这是合乎逻辑的,因为该值是本地数组的一部分,但我不知道如何解决这个问题。)

代码:

var markers = [
   { lat: 58, lng: 07, title: 'Marker 01', url: 'article.aspx' },
   .... /* etc */
]
for (var idx in markers) {
  var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng( markers[idx].lat, markers[idx].lng ), 
    title: markers[idx].title,
    map: map
  });
  google.maps.event.addListener( marker, 'click', function() {
    window.location.href = markers[idx].url;
  });
}

当我点击最终地图中的一个标记时(即触发'click'监听器),我被重定向到一个名为'undefined'的页面,因为'url'属性不再具有值。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

也许你可以将url传递给调用addListener

的函数