为什么document.GetElementById返回null

时间:2010-04-13 18:30:37

标签: javascript getelementbyid

我一直在成功使用document.GetElementById但是从一段时间以来我无法再次使用它。 我使用它的旧页面仍然可以工作,但事情就像这样简单:

<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“)为null”。 如果我使用Firefox或Chrome或者我启用了哪些扩展程序或者我用于html的标题,它无关紧要,它总是为空,我找不到可能出错的地方。

感谢您输入=)

6 个答案:

答案 0 :(得分:44)

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

答案 1 :(得分:27)

试试这个:

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

答案 2 :(得分:6)

如果没有 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

答案 3 :(得分:4)

时序。

当您获取元素时,文档尚未就绪。

在检索元素之前,您必须wait until the document is ready

答案 4 :(得分:2)

浏览器会在找到后立即执行该脚本。此时,文档的其余部分尚未加载 - 还没有任何具有该ID的元素。如果您在之后运行该代码,那么该文档的一部分已加载,它将正常工作。

答案 5 :(得分:0)

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

使用+=为文档的onload事件分配更多eventHandler