我试图改变显示在作为infowindow内容的DIV内的内容。我已经能够在infowindow中将内容从Hello更改为YO。问题是当我关闭infowindow并重新打开它时,更新的内容将恢复为原始状态。以下是我的代码:
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
if (event.type == google.maps.drawing.OverlayType.MARKER) {
//event.overlay.setTitle("Hello");
var infowindow = new google.maps.InfoWindow({
content: '<div id="content" onmouseover="updateContent()">Hello</div>',
maxWidth: 10
});
google.maps.event.addListener(event.overlay, 'click', function() {
infowindow.open(map, event.overlay);
});
}
});
function updateContent() {
document.getElementById('content').innerHTML = "Yo";
}
我基本上想创建一个默认信息窗口,并允许用户在将广告投放到页面后输入自己的文字...
答案 0 :(得分:12)
我发现上面接受的答案不起作用,因为我必须使用如下的setContent():
google.maps.event.addListener(drawingManager, 'overlaycomplete', function (event) {
if (event.type == google.maps.drawing.OverlayType.MARKER) {
//event.overlay.setTitle("Hello");
var infowindow = new google.maps.InfoWindow({
content: '<div id="content" onmouseover="updateContent()">Hello</div>',
maxWidth: 10
});
google.maps.event.addListener(event.overlay, 'click', function () {
infowindow.open(map, event.overlay);
});
}
});
function updateContent() {
infowindow.setContent("Yo");
}
答案 1 :(得分:9)
您必须通过setContentHTML方法设置内容
var infowindow ;
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
if (event.type == google.maps.drawing.OverlayType.MARKER) {
//event.overlay.setTitle("Hello");
infowindow = new google.maps.InfoWindow({
content: '<div id="content" onmouseover="updateContent()">Hello</div>',
maxWidth: 10
});
google.maps.event.addListener(event.overlay,'click',function()
infowindow.open(map,event.overlay);
});
}});
function updateContent(){
infowindow.setContent("YO");
}
答案 2 :(得分:0)
最好不要使用HTML字符串而是使用DOM元素来创建InfoWindow的内容。 因此,替换:
new google.maps.InfoWindow({
content: '<div id="content" onmouseover="updateContent()">Hello</div>'
});
具有:
var domElement = document.createElement('div');
domElement.innerHTML = '<div id="content" onmouseover="updateContent()">Hello</div>';
new google.maps.InfoWindow({
content: domElement
});
现在,您可以使用document.getElementById("content");
轻松访问div并执行所需的所有DOM操作。