43

我一直在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") is null都在。我使用的是 Firefox 还是 Chrome,或者我启用了哪些扩展程序,或者我为 HTML 使用了哪些标头,这都无关紧要,null而且我找不到可能出错的地方。

4

6 回答 6

60

您可以像这样使用脚本标签:

<script defer>
    // your JavaScript code goes here
</script>

加载完所有内容后,JavaScript 将应用于所有元素。

于 2010-04-13T18:34:41.137 回答
39

尝试这个:

 <script type="text/javascript">
  window.onload = function() {
   document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?";
  }
 </script>
于 2010-04-13T18:35:40.300 回答
12

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

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

加载事件:

load 事件在文档加载过程结束时触发。至此,文档中的所有对象都在 DOM 中,所有图片和子帧都加载完毕。

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

于 2010-04-13T18:43:45.723 回答
6

定时。

当您获取元素时,文档还没有准备好。

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

于 2010-04-13T18:34:23.760 回答
5

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

于 2010-04-13T18:35:44.647 回答
-2
<script type="text/javascript">
  window.onload += function() {
   document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?";
  }
 </script>

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

于 2010-04-13T18:47:07.900 回答