Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';我的Javascript代码不能访问google.maps.InfoWindow中的div吗?_Javascript_Html_Google Maps - Fatal编程技术网

为什么可以';我的Javascript代码不能访问google.maps.InfoWindow中的div吗?

为什么可以';我的Javascript代码不能访问google.maps.InfoWindow中的div吗?,javascript,html,google-maps,Javascript,Html,Google Maps,我正在使用谷歌地图Javascript API。我将InfoWindow的内容设置为div,然后尝试使用document.getElementById()获取InfoWindow中的div元素 var contentString = '<div id="content" style="width:200px;height:200px;"></div>'; var infowindow = new google.maps.InfoWindow({ po

我正在使用谷歌地图Javascript API。我将InfoWindow的内容设置为div,然后尝试使用document.getElementById()获取InfoWindow中的div元素

  var contentString = '<div id="content" style="width:200px;height:200px;"></div>';

  var infowindow = new google.maps.InfoWindow({
      position: map.getCenter(),
      content: contentString
    });

  infowindow.open(map);

  console.log(document.getElementById('content'));
var contentString='';
var infowindow=new google.maps.infowindow({
位置:map.getCenter(),
内容:contentString
});
打开(地图);
log(document.getElementById('content');

信息窗口如我所料显示在地图的中心。但是,这里代码的最后一行将“null”记录到控制台。如果在代码完成后在不同的函数中执行同一行代码,则从getElementById('content')返回一个元素,并将有关该元素的信息记录到控制台。我不明白这里发生了什么。我认为在创建InfoWindow并在地图上打开它的代码行之后,“content”div就是DOM的一部分。但运行我的代码则相反。有人知道出了什么问题吗?

infowindow内容将异步添加到DOM中。只有在它位于DOM中之后,才能使用
.getElementById
获取它。要检测何时将其添加到DOM,请使用infowindow上的事件:

domready参数:无

当包含InfoWindow内容的连接到DOM时,将触发此事件如果您正在动态生成信息窗口内容,您可能希望监视此事件。



因为它位于不同的帧中。另外,了解同源策略。请看第页,也许domready事件可以帮助您。我不相信地图位于不同的框架中。我没有包含设置地图的代码,但是整个地图都包含在我页面上的一个div中,正如googlemapsjavascript API所指示的那样。另外,如果它在另一个框架中,为什么我稍后调用getElementById('content')会成功,而第一个没有成功?感谢您指出domready事件。我假设当我最初设置InfoWindow的内容时,我不必使用它,我猜它将用于在脚本中有一个中心点来处理任何时间显示的窗口,而不必在脚本中的任何地方重复可能发生的代码?这非常有效。在第一个代码块中,您的答案有小的输入错误。您忘记了一个逗号:
google.maps.event.addListener(信息窗口,'domready'函数(){
应该是
google.maps.event.addListener(信息窗口,'domready',函数(){
var contentString = '<div id="content" style="width:200px;height:200px;">14</div>';

var infowindow = new google.maps.InfoWindow({
  position: map.getCenter(),
  content: contentString
});

infowindow.open(map);
google.maps.event.addListener(infowindow, 'domready', function() {
    console.log(document.getElementById('content'));
});