gpt4 book ai didi

javascript - 使用 javascript 和 getElementsByClassName 检索显示属性

转载 作者:行者123 更新时间:2023-11-28 08:01:48 26 4
gpt4 key购买 nike

我正在尝试创建一个可扩展的 div。我想检索 CSS 显示属性并使用纯 javascript 更改它。这样做时,我收到一条错误消息:“未捕获的类型错误:无法在‘窗口’上执行‘getComputedStyle’:参数 1 不是‘元素’类型。”

var myFunction = function() {   

var header = document.getElementsByClassName('collapse_header');

var hiddenDiv = document.getElementsByClassName('collapse_body');
var theCSSprop = window.getComputedStyle(hiddenDiv).getPropertyValue('display');
for (var i = 0; i < hiddenDiv.length; i++) {

if (theCSSprop.style.display === "block" || theCSSprop.style.display === "") {
clVal[i].style.display = "none";

} else {
theCSSprop.style.display = "block";
}


header[i].addEventListener('click', myFunction, false);

}

}
document.addEventListener('DOMContentLoaded', myFunction, false);
.collapse_wrapper {
width:500px;
padding:0;
overflow:hidden;
border:1px solid #636428;
border-radius:18px;
margin:auto;
margin-top:50px;
margin-left:50px;
float:left;
}

.collapse_header {
padding:50px;
width:100%;
background:#636428;
font-size:34px;
color:#fff;
overflow:hidden;
}

.collapse_body {
height:500px;
background:#fff;
font-size:90px;
display:none;
}
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>

<body>
<section class="collapse_wrapper">
<div class="collapse_header">
Expandable Div 1
</div>

<div class="collapse_body">
The body of div 1
</div>
</section>

<section class="collapse_wrapper">
<div class="collapse_header">
Expandable Div 2
</div>

<div class="collapse_body">
The body of div 2
</div>
</section>
</body>
</html>

最佳答案

我有一个您想要实现的工作示例。如果您不使用库,以跨浏览器的方式获取计算属性会有点麻烦。所以,我认为在 javascript 中设置 display:none 可能会更好。

这是我的代码

for (var i = document.getElementsByClassName('collapse_body').length - 1; i >= 0; i--) {
document.getElementsByClassName('collapse_body')[i].style.display = "none";
};
var l = document.getElementsByClassName('collapse_header');
var toggle = function()
{
cb = this.parentNode.getElementsByClassName('collapse_body')[0];
cb.style.display = ((cb.style.display == "none") ? "block" : "none");

}
for (var i = l.length - 1; i >= 0; i--) {
l[i].addEventListener('click', toggle, false);
};

基本上,您将所有 collapse_body 元素的 display 属性设置为 none,然后附加到每个 collapse_header 一个切换他兄弟 collapse_body 的显示属性的事件。

Here is a working example

另请注意,getElementsByClassName() 返回一个元素数组,您可以像处理普通数组一样从中映射或选择元素。

关于javascript - 使用 javascript 和 getElementsByClassName 检索显示属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29722118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com