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'属性不再具有值。我该如何解决?
谢谢!我现在做的是这样的: (function(m,u){google.maps.event.addListener(m,'click',function(){window.location.href = u;})})(marker,标记[IDX] .URL); 它的工作原理!这真的是解决它的最好方法吗? – Peter 2010-11-12 10:53:14
我认为如果您尝试将其传递给其他函数(addListener方法内的函数) – 2010-11-15 15:15:13