编程语言
首页 > 编程语言> > javascript-使用previousSibling和nextSibling设置属性

javascript-使用previousSibling和nextSibling设置属性

作者:互联网

因此,自从我开始学习JavaScript以来,我一直在阅读Tim Wright撰写的《学习JavaScript》这本书.

在这本书中,我找到了关于如何移动和定位DOM树中元素的章节,其中一章是利用以兄弟姐妹为目标的属性,而在本书中进行练习时,我根本无法使以下语句起作用:

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

快速浏览此代码后,我想知道您中是否有经验更丰富的开发人员可以帮助我,并向我解释为什么此方法无法正常工作.我感到困惑是因为我不知道我做错了什么还是关于这些属性的文章拼写错误.

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

干杯!

阿尔梅达

解决方法:

nextSibling选择元素的下一个同级.下一个同级节点也可以是没有setAttribute方法的textNode,即您的代码试图将一个类添加到下一个同级textNode.如果删除了两个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");

标签:dom,html,javascript,nextsibling
来源: https://codeday.me/bug/20191028/1953728.html