使用previousSibling和nextSibling来设置属性
Working with previousSibling and nextSibling to set attributes
因此,自从我开始学习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>
在快速浏览了这段代码后,我想知道你们中是否有更有经验的开发人员可以帮助我,解释为什么这段代码不能正常工作。我感到困惑,因为我不知道是我做错了什么,还是关于这些属性的文章拼写错误。
无论如何,感谢您的时间和提前提供的帮助!
干杯!
cs.almeida
nextSibling
选择元素的下一个同级元素。下一个同级节点也可以是没有setAttribute
方法的textNode
,也就是说,您的代码试图做的是向下一个同类textNode添加一个类。如果删除2个li
元素之间的换行符和其他隐藏字符,则代码将按预期工作。
另一个选项是使用nextElementSibling
属性而不是nextSibling
,它将选择具有1
的nodeType
的下一个同级节点,即元素的下一HTMLElement
同级节点。
document.getElementById("about")
.parentNode
.nextElementSibling
.classList // https://developer.mozilla.org/en-US/docs/Web/API/Element/classList
.add("next");
相关文章:
- Javascript使用变量设置属性
- 如何在自动完成时设置属性标题
- 未捕获的类型错误:无法设置属性'innerHTML'如果为null,则将脚本移动到正文不会;不起作用
- 未捕获的类型错误:无法设置属性'背景'的未定义
- 无法设置属性'innerHTML'在javascript中为null
- Haxe Javascript:在不使用Reflect的情况下按名称获取和设置属性
- Jquery为每个元素设置属性
- 从骨干集合筛选模型,然后为这些模型设置属性
- 我们可以设置属性'id'到不同的'按钮'通过使用javascript或jquery的循环
- 如何在javascript对象中设置属性的类型,就像mongoose模式设计一样
- emscripten+sdl=引发异常:TypeError:无法设置属性'widthNative'的未定
- 未捕获的类型错误:无法设置属性'onclick'为null.已尝试window.onload
- Backbone JS Promises在模型上设置属性之前解析
- Highcharts无法设置属性'的值;要点':对象为null或未定义
- 无法设置属性'round'的未定义
- 通过 Javascript 设置 C# 属性值
- 在 app.locals 上设置属性和调用 app.set() 有什么区别?
- 不引人注目地设置属性后函数失败
- j查询在设置属性后在后续单击时不读取数据属性
- IE错误:无法设置属性'的值;样式':对象为null或未定义