我在代碼中遇到了一些問題,我嘗試在JavaScript中的InfoWindow內容中啓動一個函數,並且我不知道爲什麼,我很難做到這一點。我已經看了很多關於它在stackoverflow和其他地方的話題,應用到我見過的這些話題上,但是...InfoWindow內容中的onclick
注意:這是我整個代碼的一部分,這就是爲什麼「infobulle 「似乎沒有被宣佈。 以同樣的方式,「this.jsonActivity」和「mapView」在這部分代碼之前正確初始化。
這裏,參數中的「newActivity」是來自google maps API的標記,我試圖做的是在點擊它時在當前標記旁邊顯示InfoWindow。一切正常,整個文本正確顯示在InfoWindow中,但問題是我不能調用「alertMessage()」方法,當我點擊按鈕時,什麼都沒有發生......我真的不知道爲什麼! !
嗯,這裏是我的代碼,感謝您的幫助:)
google.maps.event.addListener(newActivity, "click", function() {
if(infobulle)
infobulle.close();
var contenu = '<strong>' + this.jsonActivity.title + '</strong><br/>' +
this.jsonActivity.description + '<br/>' +
'<h3>Routing:</h3>' +
'<button onclick="alertMessage()">Click me</button>';
infobulle = new google.maps.InfoWindow({
content: contenu,
maxWidth: 120
});
infobulle.open(mapView, this);
function alertMessage() {
alert("alertMessage");
}
});
編輯:
這是完美的,它的工作吧!
我已經嘗試了所有的解決方案,只有一個解決方案爲我工作,這是爲Dr.Molle聲明瞭全球功能的解決方案!
現在我把我已經嘗試了其他兩種解決方案:
google.maps.event.addListener(newActivity, "click", function() {
if(infobulle)
infobulle.close();
var contenu = '<strong>' + this.jsonActivity.title + '</strong><br/>' +
this.jsonActivity.description + '<br/>' +
'<h3>Routing:</h3>' +
'<button id="myAlert">Click me</button>';
infobulle = new google.maps.InfoWindow({
content: contenu,
maxWidth: 120
});
infobulle.open(mapView, this);
document.getElementById("myAlert").addEventListener(function() {
alert("something");
});
});
對於由賈裏德·史密斯建議的解決方案。就像以前一樣,除了點擊按鈕時,所有東西都能正確顯示,沒有任何反應。
而對於亞歷山大提出瞭解決方案:
google.maps.event.addListener(newActivity, "click", function() {
if(infobulle)
infobulle.close();
var contenu = '<strong>' + this.jsonActivity.title + '</strong><br/>' +
this.jsonActivity.description + '<br/>' +
'<h3>Routing:</h3>' +
'<button onclick="(function() {
alert(\"something\");
})();">Click me</button>';
infobulle = new google.maps.InfoWindow({
content: contenu,
maxWidth: 120
});
infobulle.open(mapView, this);
});
這個時候,即使我應該單擊該按鈕不會顯示的元素...
那麼這兩個解決方案,也許我沒有正確地使用他們......所以如果你發現話要說,那就請便吧:)
EDIT(2): 好吧,現在我有一個其他的問題:如果我想把一個變種可以作爲函數的參數,我該如何做到這一點?只需輸入變量的名稱作爲參數不起作用。
我已經試過:
var contenu = '<strong>' + this.jsonActivity.title + '</strong><br/>' +
this.jsonActivity.description + '<br/>' +
'<h3>Routing:</h3>' +
'<button onclick="alertMessage(\'something\')">Click me</button>';
window.alertMessage = function(thing) {
alert(thing);
};
這是工作,因爲我直接就把字符串作爲參數。
但如果我聲明:
var text = "something";
var contenu = '<strong>' + this.jsonActivity.title + '</strong><br/>' +
this.jsonActivity.description + '<br/>' +
'<h3>Routing:</h3>' +
'<button onclick="alertMessage(text)">Click me</button>';
window.alertMessage = function(thing) {
alert(thing);
};
它不工作了,你知道如何解決這一問題?
你不應該提倡宣佈在HTML中的JS功能。 – 2014-10-11 21:53:39
它已經在html中聲明。 – Alex 2014-10-11 21:58:32
我知道,但重點是幫助人們編寫更好的代碼,而不是在錯誤的方向上更有效地拖拽。 – 2014-10-11 22:01:19