即使元素存在,getElementById() 也会返回 null

发布于 2024-10-23 17:30:32 字数 354 浏览 5 评论 0原文

我尝试使用 getElementById() 获取元素,但即使该元素存在,它也会返回 null。我做错了什么?

<html>
<head> 
    <title>blah</title>
    <script type="text/javascript">
        alert(document.getElementById("abc"));
    </script>
</head> 
<body>
    <div id="abc">

    </div>
</body>

I'm trying to get the element with getElementById(), but it returns null even though the element exists. What am I doing wrong?

<html>
<head> 
    <title>blah</title>
    <script type="text/javascript">
        alert(document.getElementById("abc"));
    </script>
</head> 
<body>
    <div id="abc">

    </div>
</body>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

断舍离 2024-10-30 17:30:34

您必须将其放入 document load 事件中。执行脚本时,DOM 尚未到达 abc

You have to put this in a document load event. The DOM hasn't gotten to abc by the time the script is executed.

盗心人 2024-10-30 17:30:34

您的脚本在 DOM 加载之前运行。要解决此问题,您可以将代码放置在 window.onload 函数中,如下所示:

window.onload = function() {
    alert(document.getElementById("abc"));
};

另一种方法是将您的 script 放置在结束 之前。 标签。

Your script runs before the DOM has been loaded. To fix this you can place your code in the window.onload function like so:

window.onload = function() {
    alert(document.getElementById("abc"));
};

An alternative is to place your script right before the closing </body> tag.

谎言 2024-10-30 17:30:34

如果您不想附加到加载事件,则只需将脚本放在正文的底部,这样它将在最后执行 -

<html>
<head> 
    <title>blah</title>    
</head> 
<body>
    <div id="abc">
    </div>
    <script type="text/javascript">
        alert(document.getElementById("abc"));
    </script>
</body>
</html>

If you don't want to attach to the load event then simply put your script at the bottom of the body, so it will execute at the end-

<html>
<head> 
    <title>blah</title>    
</head> 
<body>
    <div id="abc">
    </div>
    <script type="text/javascript">
        alert(document.getElementById("abc"));
    </script>
</body>
</html>
失退 2024-10-30 17:30:34

这是因为脚本在页面呈现之前运行。

为了证明这一点,请将此属性添加到 body 标记中:

<body onload="alert(document.getElementById('abc'));" >

This is because the script runs before the page has rendered.

For proof add this attribute to the body tag:

<body onload="alert(document.getElementById('abc'));" >
不及他 2024-10-30 17:30:34

但它并不存在,在 HTML 中不存在。 HTML 文档是从上到下解析的,就像程序运行一样。最好的解决方案是将脚本标签放在页面底部。您还可以将 JavaScript 附加到 onload 事件。

But it doesn't exist, not at that point in the HTML. HTML documents are parsed top-to-bottom, just like programs run. The best solution is just to put your script tag at the bottom of the page. You could also attach your JavaScript to the onload event.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文