为什么 document.GetElementById 返回 null

IT技术 javascript getelementbyid
2021-02-25 01:20:09

我一直在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找不到可能出错的地方。

6个回答

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

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

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

试试这个:

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

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

without an explicit event [...] the scripts are not run我不同意。如果脚本确实没有运行,那么(1)为什么 OP 会收到警告... is null(2)您必须以某种方式指定事件,<script event="...">...</script>因为window.onload = ...它也是脚本的一部分,因此不会运行。¶ 我认为这个答案更好地阐述了这个问题。
2021-05-03 01:20:09

定时。

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

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

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