传递事件和此对象在不同范围内起作用

时间:2014-05-09 11:05:18

标签: javascript google-maps

我正在构建一个谷歌地图应用程序,我需要将事件特定数据传递给JavaScript中的另一个函数。

当我点击地图的一部分时,InfoWindow会弹出信息,例如latLng。它还有一个按钮。单击时,它会打开包含更多信息的叠加层,其中一部分信息来自click事件。我需要将eventthis对象传递给按钮,以在叠加层中显示信息。

首先我创建事件:

// Add a listener for the mouse event.
// In the google maps scope
google.maps.event.addListener(SomeMapArea, 'click', showTB);

然后我有文本框功能:

// In the google maps scope
function showTB(event) {

    var contentString = event.latLng + 
        '<br>' + '<button onclick="moreInfo(event, this)">More</button>';

    infoWindow.setContent(contentString);
    infoWindow.setPosition(event.latLng);
    infoWindow.open(map);

}

当我点击按钮时,会显示包含更多信息的叠加层:

// In global scope
function moreInfo(e, t){  //using (event, this) here causes 'missing formal parameter' error
    // Overlay code
    var overlayContent = e.latLng + t.someAttribute;

    document.getElementById("content").innerHTML = overlayContent;
}

但是,eventthis未在函数moreInfo中定义。如何将这两个对象传递到moreInfo以便我可以读取它们的属性?

1 个答案:

答案 0 :(得分:0)

试一下

var contentString = event.latLng + 
    '<br>' + '<button onclick="moreInfo('+event+','+this+')">More</button>';