2013-11-28 41 views
1

我得到了以下代码,可以正常工作 - Fiddle。它设置了一些标记并为它们使用了1个infowindow。
但是,当我改变信息窗口的内容通过改变这是一个div元素:Google Maps API - 手动关闭后不会重新打开信息窗口

infowindow.setContent(locations[i][0]); 
infowindow.open(map, marker); 

有了这个:

document.getElementById("info").innerHTML=locations[i][0];  
infowindow.setContent(document.getElementById("info")); 
infowindow.open(map, marker); 

奇怪的事情发生了 - 信息窗口仍然显示上的标记,当点击,直到你决定通过点击'x'来关闭infowindow。之后,当您点击标记时,infowindow将不会再次打开。

链接到问题小提琴 - here。任何想法是什么造成这个?

感谢您的帮助!

回答

1

任何想法是什么造成这种情况?

是的。通过

infowindow.setContent(document.getElementById("info")); 

您正在<div id="info">infowindow。这很好,直到你关闭infowindow,因为当你关闭infowindow时,你也是从DOM中删除<div id="info">!而在这之后,

document.getElementById("info").innerHTML=locations[i][0]; 

会因为<div id="info">不再存在引发execption:

Uncaught TypeError: Cannot set property 'innerHTML' of null

你真的应该找到另一种方法。我会从HTML删除<div id="info"></div>,并使用此代码来代替:

var content='<div id="info">'+locations[i][0]+'</div>'; 
infowindow.setContent(content); 
infowindow.open(map, marker); 

看到分叉小提琴 - >http://jsfiddle.net/E2CxC/

相关问题