2012-03-02 38 views
0

我有这样的代码的getElementById找不到div嵌套其他的div里面HTML5

<div id="main" class="container-fluid"> 
     <div id="main1" class="row-fluid"> 
      <div id="main2" class="span2"> 
       <h1>Feynman</h1> 
       <input id="address" type="textbox" class="search-query" placeholder="Search"> 
       <input type="button" value="Encode" class="btn btn-primary btn-large" onclick="codeAddress()"> 
       <p></p> 
      </div> 
      <div id="main3" class="span10"> 
       <div id="map_canvas" style="width:100%; height:100%"></div> 
      </div> 
     </div> 
    </div> 

,我在身体onload是从一个初始化调用它使用简单document.getElementById("map_canvas")

问题是,如果我拿出我的<!DOCTYPE html>它会起作用,但如果我将此页面标记为HTML5页面,则会失败。

样品JS

var geocoder; 
     var map; 
     function initialize() { 
      geocoder = new google.maps.Geocoder(); 
      var latlng = new google.maps.LatLng(51.486407, 0.059566); 
      var myOptions = { 
       zoom : 10, 
       center : latlng, 
       mapTypeId : google.maps.MapTypeId.ROADMAP 
      } 
      map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

     } 
+2

是什么'我拿出我会工作,但是如果我将这个页面标记为HTML5页面,就会失败。“是什么意思?这个http://jsfiddle.net/mplungjan/6WEUP/的什么部分没有做你想要的东西? – mplungjan 2012-03-02 15:07:25

+0

你能张贴一个样本或你的JS代码吗?对我来说看起来很好。 - http://jsfiddle.net/DqPSR/ – Smamatti 2012-03-02 15:08:19

+0

mplungjan,我有这个doctype标签,说它是HTML5,当我不再标记我的网页为html5 getelementbyid可以找到div – kaizenx 2012-03-02 15:12:56

回答

0

现在我明白网络是如何工作的,我的问题实际上是由我试图选择,而我在寻找它没有被加载股利所致。

所有需要做的就是等待DOM第一加载,使用这样的事情

document.addEventListener('DOMContentLoaded', function() { 
    // TODO 
}); 

或Jquery的等效

$(function() { 
    // TODO 
}); 
+0

但你已经提到'我正在使用一个简单的document.getElementById(“map_canvas”)在一个正在调用它的正文onload一个initialise.'所以你执行语句后onload只 – mohamedrias 2015-03-25 04:11:54

+0

初始化不存在,但我认为,这是一个很长一段时间以前,所以我的回忆是有点模糊了事件的顺序是什么。 – kaizenx 2015-03-30 08:31:36