javascript - nextElementSibling 未捕获 CSS 样式
问题描述
我有一个应该打开/关闭可折叠按钮的按钮,div
HTML 如下所示:
<div class='outer-collapsible'>
<button type='button' class='collapsible'>Targets and Victims</button>
<div class='content'>
<p>Lorem ipsum...</p>
</div>
</div>
当我选择所有班级button
时collapsible
,我正在尝试使用nextElementSibling
这样的选择<div class='content'>
:
let collapsibles = document.querySelectorAll('.collapsible');
for (let i = 0; i < collapsibles.length; i++) {
if (collapsibles[i].nextElementSibling.style.display == 'block') {
// do something
}
}
但是虽然nextElementSibling
选择了div
,但没有检测到我的 CSS 文件中的样式属性。nextElementSibling
只检测内联样式?我确信我可以想到其他方法来实现这一点,但我想知道为什么nextElementSibling
选择了正确的元素但没有正确检测到样式?
编辑:
CSS
.collapsible {
background-color: #eee;
color: #444;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.active,
.collapsible:hover {
background-color: #ccc;
}
.content {
padding: 0 18px;
display: none;
overflow: hidden;
background-color: #f1fff8;
}
解决方案
这不是问题nextElementSibling
,而是首先如何检测 CSS 样式的问题。
.style
只能用于读取style
属性的内容,例如<div style="color: red"></div>
.
为了阅读“实际”样式,您可能需要.getComputedStyle()。
推荐阅读
- c++ - google mock - 如何模拟被测试类拥有的对象
- assembly - 如何将数组的元素存储在8086中的内存地址
- ruby - 如何从 Ruby ERB 脚本访问作为 bash 数组的环境变量?
- node.js - 设置没有操作读取的文档?
- python - (Django)在视图中显示多个生成的表单(未知数量),并检索它们的结果?
- azure - 如何限制 eventthub 对特定消费者组的访问
- java - 如何在 spring webflux/webclient 中有条件地链接 webclient 调用
- flutter - 手势检测器不想将自己调整为子容器(除非你给它一个颜色)
- android - Gradle 依赖项下载罐子
- mysql - mysql 将当前用户的信息插入到表中