javascript - 如何获得特定元素的父母?
问题描述
我正在尝试获取一个元素(具有“活动”类)的所有父级(具有“父级”类),然后对其应用样式。但它似乎没有找到我要求的元素。
这是我目前使用的 HTML:
<ul>
<li class="parent">
<ul class="children">
<li class="active">Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</li>
</ul>
我正在使用以下 Javascript 文件将样式应用于所有具有“活动”类的起始元素的“父级”类的父级:
function openList() {
el = document.getElementsByClassName("active");
while (el.parentNode) {
el = el.parentNode;
if (el.className === "parent") {
el.style.display="block";
}
}
}
window.onload = openList();
它没有返回任何东西,也没有错误,但似乎正在运行。
解决方案
代码有两个问题。
- 列表项
getElementsByClassName
返回HTMLCollection
您应该通过使用访问其第一个元素[0]
- 您将 window.onload 设置
return
为功能openList
。只是不要调用该函数,即删除()
注意:您声明el
为全局变量。使用let
var
或const
声明。
function openList() {
let el = document.getElementsByClassName("active")[0];
while (el.parentNode) {
el = el.parentNode;
if (el.className === "parent") {
el.style.display="block";
}
}
}
window.onload = openList;
<ul>
<li class="parent">
<ul class="children">
<li class="active">Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</li>
</ul>
推荐阅读
- exception - 如何找到 RAVENDB 方法可能引发的异常?
- python - 每分钟检查一次是否生成了 *.odb 文件。如果是 --> 获取数据
- intellij-idea - 如何生成 IntelliJ JUnit json 自动报告?
- node.js - 执行 Python 脚本的 Express 路由上的 Heroku H12 请求超时错误
- deep-learning - 卷积网络和卷积层有什么区别?
- typescript - 可能未定义的输出值
- java - Selenium ChromeDriver:增加获取 WebElement 文本的时间
- eclipse - 方法调用链后的缩进
- r - 将文件名添加到数据框列表
- elasticsearch - 我在哪里放置索引。*弹性搜索集群中的设置