2010-11-12 38 views
0

我的问题是使用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'属性不再具有值。我该如何解决?

回答

0

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

+0

谢谢!我现在做的是这样的: (function(m,u){google.maps.event.addListener(m,'click',function(){window.location.href = u;})})(marker,标记[IDX] .URL); 它的工作原理!这真的是解决它的最好方法吗? – Peter 2010-11-12 10:53:14

+0

我认为如果您尝试将其传递给其他函数(addListener方法内的函数) – 2010-11-15 15:15:13