gpt4 book ai didi

javascript - 当我知道 ID 存在时,为什么 document.getElementById() 返回 null 值?

转载 作者:行者123 更新时间:2023-12-03 07:22:02 25 4
gpt4 key购买 nike

我正在工作中为 CMS 模板编写一些自定义 Javascript。我希望能够做出某个<li>页面上的元素仅接收该页面的“当前”类别。所以在全局页面头部我有这样的东西:

<script type="text/javascript">
function makeCurrent(id) {
var current = document.getElementById(id);
current.setAttribute("class", "current"); // for most browsers
current.setAttribute("className", "current"); // for ie
}
</script>

然后在每个单独的页面 <head> ,我有这样的东西:

<script type="text/javascript">makeCurrent("undergraduate")</script>

在页面上我有一个导航 <ul> ,类似于:

<li id="undergraduate"><a href="...">Undergraduate Program</a></li>
<li id="graduate"><a href="...">Graduate Program</a></li>

etc.

当我加载页面时,未应用该类。当我查看 Firebug 控制台时,它给出了错误消息:

current is null
(x) current.setAttribute("class", "current");

我仍在掌握编写可靠的原始 JavaScript 的窍门(在 jQuery 之后向后学习,你知道它是如何进行的),但我想只用 JS 编写它。我犯了什么愚蠢的新手错误?

谢谢大家!

最佳答案

如果在 DOM 树完成加载之前执行 JavaScript,它将返回 null。因此,一个想法是在关闭 body 标记之前在最后一直调用该函数。

这就是为什么大多数 JavaScript 库都支持 dom-ready 事件,现代浏览器也有这个(domcontentloaded),但是对于广泛的浏览器支持,自己做这件事有点棘手(好吧,没那么困难,3 或我认为有 4 种不同的方式。)

关于javascript - 当我知道 ID 存在时,为什么 document.getElementById() 返回 null 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3823063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com