我正在收集來自infowindow的用戶輸入。在infowindow上,我有一個「保存」按鈕來保存用戶的輸入。但是當我點擊那個按鈕時,我也點擊了地圖,它會讓我的標記移動到其他地方。點擊「保存」按鈕後,我只需關閉infowindow即可。我不希望我的標記移動。下面的代碼: 在地圖上連續點擊兩次
<body>
<script>
var infowindow, marker;
function initialize()
{
var myCenter = new google.maps.LatLng(10.771654, 106.698285);
var mapProp = {
center: myCenter,
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("googleMap"),
mapProp);
var html = "<div>Comment:<br/>" +
"<textarea id='text_map' cols='25' rows='4'></textarea>" +
"<input type='button' onclick='set_data()' value='Save'/>" +
"</div>";
infowindow = new google.maps.InfoWindow({
content: html
});
marker = new google.maps.Marker({
});
google.maps.event.addListener(map, 'click', function(event)
{
var location = event.latLng;
marker.setPosition(location);
marker.setMap(map);
infowindow.open(map,marker);
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
function set_data()
{
//do something
infowindow.close();
}
function loadScript()
{
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.googleapis.com/maps/api" +
"/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false&callback=initialize";
document.body.appendChild(script);
}
window.onload = loadScript;
</script>
<div id="googleMap" style="width: 500px; height: 500px"></div>
</body>
</html>
奇怪的是我並沒有對IE 9,但Firefox和Chrome這個問題。
編輯:
爲了解決這個問題,我只需要停止事件傳播。以下是我的工作方式: 傳遞事件作爲函數的參數set_data()
onclick ='var event = arguments [0] || window.event; set_data(事件)」
在set_data添加這行代碼:
e.stopPropagation();
感謝貝倫德的有用鏈接。
研究stopPropagation'如何'適用於JavaScript事件 – charlietfl
感謝您的幫助! –