【问题标题】:getElementById can't find div nested inside other divs in HTML5getElementById 在 HTML5 中找不到嵌套在其他 div 中的 div
【发布时间】:2012-03-02 15:05:50
【问题描述】:

我有这样的代码

<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"),它从初始化中调用它。

问题是,如果我取出我的&lt;!DOCTYPE html&gt;,它会起作用,但如果我留下它以将我的页面标记为 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);

        }

【问题讨论】:

  • I take out my it will work, but it fails if I leave that in to flag my page as a HTML5 page. 是什么意思? jsfiddle.net/mplungjan/6WEUP 的哪一部分没有做你想做的事?
  • 你能发布一个示例或你的 JS 代码吗?在我看来很好。 -- jsfiddle.net/DqPSR
  • mplungjan,我有这个说它是 HTML5 的 doctype 标签,当我不再将我的页面标记为 html5 时,getelementbyid 可以找到 div
  • 既然您已经知道存在 doctype 问题,您是否尝试验证您的 html 代码?它应该有帮助
  • 适用于我在 FF、safari、opera 和 IE 中,您使用的是哪个浏览器。我注意到您没有关闭输入字段(没有 或 />),但这不会影响我所做的测试。

标签: javascript html dom twitter-bootstrap


【解决方案1】:

现在我了解了网络的工作原理,我的问题实际上是由于我试图选择的 div 在我搜索它时没有被加载。

所有需要做的就是等待DOM首先加载,使用类似这样的东西

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

或等效的 Jquery

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

【讨论】:

  • 但是你提到And I am using a simple document.getElementById("map_canvas") in a body onload that is calling it from an initialise.所以你只在onload之后执行语句
  • 初始化还不存在我想,这是很久以前的事了,所以我对事件的顺序有点模糊。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
相关资源
最近更新 更多