getElementById返回null?

document.getElementById('id of div that definately exists')返回null。

我原来最后加载了JavaScript,以确保我不需要担心onload事件。 我也尝试使用onload事件。 这是非常恐怖的。 任何想法或帮助将不胜感激。

这可能是由于:

  1. 无效的HTML语法(某些标记未closures或出现类似的错误)
  2. 重复的ID – 有两个具有相同ID的HTML DOM元素
  3. 也许元素你试图通过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第一个元素