【问题标题】:How can I use a local variable in an event listener?如何在事件侦听器中使用局部变量?
【发布时间】:2023-03-19 04:41:01
【问题描述】:

我的问题在于使用 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;
  });
}

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我现在做的是: (function(m,u){google.maps.event.addListener(m, 'click', function () { window.location.href = u; })})(marker,markers[ idx].url);它有效!这真的是最好的解决方法吗?
    • 我认为如果你尝试将它传递给另一个函数(addListener 方法中的那个)会更好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多