Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在事件侦听器中使用局部变量?_Javascript_Google Maps Api 3_Dom Events - Fatal编程技术网

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

Javascript 如何在事件侦听器中使用局部变量?,javascript,google-maps-api-3,dom-events,Javascript,Google Maps Api 3,Dom Events,我的问题是使用GoogleMapsAPI,但我很确定这是一个普遍的JavaScript问题 我有一个本地对象数组,定义了一系列标记。处理这些对象没有问题。但是我想在我创建的事件处理程序中使用其中一个值,在调用事件处理程序时,该值始终是“未定义”的。(这是合乎逻辑的,因为该值是本地数组的一部分,但我不知道如何解决此问题。) 守则: var markers = [ { lat: 58, lng: 07, title: 'Marker 01', url: 'article.aspx' },

我的问题是使用GoogleMapsAPI,但我很确定这是一个普遍的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;
  });
}

当我单击最终映射中的一个标记(即触发“单击”侦听器)时,我被重定向到一个名为“未定义”的页面,因为“url”属性不再有值。如何修复此问题?

也许您可以将url传递给调用到addListener中的函数

谢谢!我现在做的是:(函数(m,u){google.maps.event.addListener(m,'click',函数(){window.location.href=u;})})(标记,标记[idx].url);而且它有效!这真的是解决这个问题的最佳方法吗?我认为如果您尝试将它传递给另一个函数(addListener方法中的函数),效果会更好