2010-04-13 83 views
15

我一直使用document.GetElementById成功,但从一段时间以来我无法再使它工作。 中,我用它仍然可以工作旧的网页,但事情像这样简单:为什么document.GetElementById返回null

<html> 
<head> 
<title>no title</title> 
<script type="text/javascript"> 
document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
</script> 
</head> 
<body> 
<div id="ThisWillBeNull"></div> 
</body> 
</html> 

现在给我“的document.getElementById(” parsedOutput“)为空”的所有时间。 如果我使用Firefox或Chrome,或者我启用了哪些扩展或者我为html使用了哪些头文件,它无关紧要,它始终为空,我无法找到可能出错的地方。

感谢您的输入=)

回答

36

页面呈现从上到下。你的代码在解析后立即执行。在执行时,div还不存在。你需要把它包装在一个window.onload函数中。

24

试试这个:

<script type="text/javascript"> 
    window.onload = function() { 
    document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
    } 
</script> 
1

浏览器是要尽快找到它执行该脚本。此时,文档的其余部分尚未加载 - 没有任何元素具有该id。如果你在之后运行代码那部分文件被加载,它将正常工作。

4

没有window.onload您的脚本从不被调用。 Javascript是一种基于事件的语言,因此没有像onload,onclick,onmouseover这样的显式事件,脚本不会运行。

<script type="text/javascript"> 
    window.onload = function(){ 
    document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
    } 
</script> 

onLoad事件:在原稿载置过程结束

负载事件触发。此时,文档中的所有对象都在DOM中,并且所有图像和子帧都已完成加载。

https://developer.mozilla.org/en/DOM/window.onload

1
<script type="text/javascript"> 
    window.onload += function() { 
    document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
    } 
</script> 

使用+=分配更eventHandler s到为onload的文档事件。

+0

这对我没有任何帮助。 – Mixxiphoid 2015-11-13 19:51:29

相关问题