gpt4 book ai didi

javascript - 使用 previousSibling 和 nextSibling 设置属性

转载 作者:搜寻专家 更新时间:2023-10-31 08:10:26 26 4
gpt4 key购买 nike

自从我开始学习 JavaScript 以来,我一直在阅读 Tim Wright 的这本名为Learning JavaScript 的书。

在这本书中,我找到了一章关于我们如何在 DOM 树中移动和定位元素,其中一章是利用以 sibling 为目标的属性,而在做书中的练习时,我根本无法做出以下陈述工作:

<ul id="nav">
<li><a href="/" id="home">Home</a></li>
<li><a href="/about" id="about">About Us</a></li>
<li><a href="/contact" id="contact">Contact Us</a></li>
</ul>
<script>
//Should add "next" class attribute to the "Contact Us" li tag.
document.getElementById("about").parentNode.nextSibling.setAttribute("class", "next");
</script>

快速查看这段代码后,我想知道你们中是否有经验丰富的开发人员可以帮助我并解释为什么这不能正常工作。我感到很困惑,因为我不知道是我做错了什么,还是有关这些属性的文章拼错了。

无论如何,感谢您的时间和提前的帮助!

干杯!

cs.almeida

最佳答案

nextSibling 选择元素的下一个兄弟。下一个兄弟节点也可以是没有 setAttribute 方法的 textNode,即您的代码试图做的是向下一个兄弟 textNode 添加一个类。如果您删除 2 个 li 元素之间的换行符和其他隐藏字符,那么您的代码将按预期工作。

另一个选项是使用 nextElementSibling属性而不是 nextSibling,它将选择具有 nodeType 的下一个兄弟节点1,即下一个 HTMLElement元素的兄弟。

document.getElementById("about")
.parentNode
.nextElementSibling
.classList // https://developer.mozilla.org/en-US/docs/Web/API/Element/classList
.add("next");

关于javascript - 使用 previousSibling 和 nextSibling 设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28800201/

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