代码之家  ›  专栏  ›  技术社区  ›  Peter

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

  •  0
  • Peter  · 技术社区  · 15 年前

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

    1 回复  |  直到 5 年前
        1
  •  0
  •   g.geloso    15 年前

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