document.getElementById('definitely exists 的 div 的 id')
返回 null。
我最初是在最后加载 JavaScript,以确保无需担心 onload 事件。我还尝试使用 onload 事件,但这很麻烦。有什么想法或帮助将不胜感激。
document.getElementById('definitely exists 的 div 的 id')
返回 null。
我最初是在最后加载 JavaScript,以确保无需担心 onload 事件。我还尝试使用 onload 事件,但这很麻烦。有什么想法或帮助将不胜感激。
同时要注意如何在页面上执行js。例如,如果您执行以下操作:
(function(window, document, undefined) {
var foo = document.getElementById("foo");
console.log(foo);
})(window, document, undefined);
由于调用文档时它尚未加载,因此这将返回null。
使用window.onload
等待DOM节点加载:
(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);
这可能由以下原因引起:
请发布您的代码。
null
,而是返回具有该ID的两个元素中的第一个元素。 - Bergi<datalist id="foo" />
和 <datalist id="foo"></datalist>
。 - ebyrobdocument.getElementById
不能正常工作的原因可能有很多:
您使用的ID无效
ID和NAME标记必须以字母([A-Za-z])开头,并且可以跟随任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“_”)、冒号(“:”)和句点(“.”)。 (资源: HTML中ID属性的有效值是什么?)
您将某个ID用作了标题中的<meta>
名称(例如版权、作者等)。这看起来很奇怪,但我也遇到过这种情况:如果您正在使用IE,请参阅
(资源: http://www.phpied.com/getelementbyid-description-in-ie/)
您正在定位帧或iframe内部的元素。在这种情况下,如果iframe加载了与父页面相同域内的页面,则应在查找元素之前定位contentdocument
(资源: 在框架内调用特定ID)
当节点没有在DOM中有效加载时,您只是查看元素,或者可能只是拼写错误。
我怀疑您没有将相同的ID用两次或更多次:在这种情况下,document.getElementById
至少应返回第一个元素。
#
符号。 - Uscewindow.onload=myFunction()
时,使用getElementById()
返回了null,但是当我使用<body onload="myFunction()">
时却没有。 - Astrolamb