twitter-bootstrap - 访问 collapse:not(.show) { display: none; 的值 }
问题描述
我正在尝试使用getElementsByClassName
以下方式获取display
样式的值:
.collapse:not(.show) {
display: none;
}
我的代码是:
document.getElementById("whatever").getElementsByClassName("collapse:not(.show)");
这没有用。我想要的结果是回来none
。我能做些什么?
解决方案
Document.getElementsByClassName()
查询文档以查找具有指定类名的元素,但您已经提供了类名以及选择器的一部分(即,collapse
是类名,并且:not(.show)
是 CSS 选择器)。
以下是如何获得display
这些元素的样式:
- 使用 查询与给定选择器匹配的所有元素的文档
Document.querySelectorAll()
。 - 使用 获取每个元素的计算样式
window.getComputedStyle()
,返回一个CSSStyleDeclaration
。 - 使用 获取
display
样式的值CSSStyleDeclaration.getPropertyValue()
。
const elems = document.querySelectorAll('.collapse:not(.show)') // 1️⃣
for (const elem of elems) {
const styles = window.getComputedStyle(elem) // 2️⃣
const display = styles.getPropertyValue('display') // 3️⃣
console.log(elem, { display })
}
.collapse:not(.show) {
display: none;
}
<ul>
<li class="collapse">Item 1</li>
<li class="collapse show">Item 2</li>
<li class="collapse">Item 3</li>
<li class="collapse show">Item 4</li>
</ul>