getElementById返回null?
document.getElementById('id of div that definately exists')
返回null。
我原来最后加载了JavaScript,以确保我不需要担心onload事件。 我也尝试使用onload事件。 这是非常恐怖的。 任何想法或帮助将不胜感激。
这可能是由于:
- 无效的HTML语法(某些标记未closures或出现类似的错误)
- 重复的ID – 有两个具有相同ID的HTML DOM元素
- 也许元素你试图通过ID获得dynamic创build(由AJAX加载或由脚本创build)?
请发布您的代码。
另外要小心如何在页面上执行js。 例如,如果你做这样的事情:
(function(window, document, undefined){ var foo = document.getElementById("foo"); console.log(foo); })(window, document, undefined);
这将返回null,因为您将在加载之前调用文档。
更好的select..
(function(window, document, undefined){ // code that should be taken care of right away window.onload = init; function init(){ // the code to be called when the dom has loaded // #document has its nodes } })(window, document, undefined);
document.getElementById
不起作用可能有很多原因
-
你有一个无效的ID
ID和NAME标记必须以字母([A-Za-z])开始,后面跟随任意数量的字母,数字([0-9]),连字符(“ – ”),下划线(“_”) ,冒号(“:”)和句点(“。”)。 (资源: 什么是HTML中的id属性的有效值? )
-
你使用了一些你已经在标题中使用过的
<meta>
名称的id(例如copyright,author …),它看起来很奇怪,但是却发生在我身上:如果你使用IE浏览一下(resource: http:// http://www.phpied.com/getelementbyid-description-in-ie/ ) -
你的目标是一个框架或iframe中的元素。 在这种情况下,如果iframe加载父页的同一个域内的页面,则应该在查找元素之前定位
contentdocument
(资源: 在框架内调用特定的ID ) -
当节点没有在DOM中有效加载时,您只需查找元素,或者这可能是一个简单的拼写错误
我怀疑你使用了相同的ID两次或更多:在这种情况下, document.getElementById
应该返回至less第一个元素