为什么document.GetElementById返回null

Bad*_*ing 23 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>
Run Code Online (Sandbox Code Playgroud)

给我"document.getElementById("parsedOutput")现在一直是null".如果我使用Firefox或Chrome或者我启用了哪些扩展程序或者我用于html的标题,它无关紧要,它始终为空,我找不到可能出错的地方.

谢谢你的输入=)

ste*_*e_c 46

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


Sar*_*raz 29

试试这个:

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


Chr*_*man 8

没有window.onload,永远不会调用你的脚本.Javascript是一种基于事件的语言,因此如果没有像onload,onclick,onmouseover这样的显式事件,脚本就不会运行.

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

Onload事件:

load文件在文档加载过程结束时触发.此时,文档中的所有对象都在DOM中,并且所有图像和子帧都已完成加载.

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


Che*_*eso 6

定时。

当您获取元素时,文档尚未准备好。

在检索元素之前,您必须等到文档准备就绪


Syn*_*tic 5

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