gpt4 book ai didi

javascript - css 转换在 for 循环 javascript 中无法正常工作

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

我使用 for 循环来更改“div 组具有相同的类名”的类名,以通过使用 css 过渡效果改变高度来改变外观。但问题是第一个 div 生效,其他的保持不变。

html:

<body onload='init()'>
<div id="menu">
<div id="chosen" class="accor hide">od</div>
<ul>
<li>To</li>
<li>Pr</li>
<li>La</li>
</ul>
<div class="accor hide">En</div>
<ul>
<li>fa</li>
<li>Co</li>
<li>Co</li>
</ul>
<div class="accor hide">Sp</div>
</div>
</body>

CSS:

.accor + ul{
max-height: 500px;
overflow: hidden;
transition: max-height 0.5s ease;
}
.hide + ul{
max-height: 0px;
overflow: hidden;
transition: max-height 0.5s ease;
}

JavaScript:

function init(){
var chosen = document.getElementById('chosen');
chosen.onclick = toggleDivs;
};

function toggleDivs(){
hideDivs = document.getElementsByClassName('accor hide');
for( var i = 0; i <= hideDivs.length; i++)
hideDivs[i].className = 'accor';
};

使用该代码,当我单击带有 id='chosen' 的 div 时,我希望所有带有 className: 'accor hide' 的 div 将像 jquery 的 slidedown 一样向下展开,但只有第一个 div 会这样做。

如果我更改一点 javascript 代码,它将在 2 个 div 生效时完成。

改变了javascript:

function toggleDivs(){
hideDivs = document.getElementsByClassName('accor hide');
hideDivs[0].className = 'accor';
hideDivs = document.getElementsByClassName('accor hide');
hideDivs[0].className = 'accor';
};

我假设是for循环代码的版本,在i=0之后,首先div发生了transition影响,循环break了,真是奇怪了。

最佳答案

function init() {
var chosen = document.getElementById('chosen');
chosen.onclick = toggleDivs;
};

function toggleDivs() {
var menu = document.getElementsByClassName('accor')
for (var i = 0; i <= menu.length; i++)
menu[i].classList.toggle('hide');
};
.accor + ul {
max-height: 500px;
overflow: hidden;
transition: max-height 0.5s ease;
}
.hide + ul {
max-height: 0px;
overflow: hidden;
transition: max-height 0.5s ease;
}
<body onload='init()'>
<div id="menu">
<div id="chosen" class="accor hide">od</div>
<ul>
<li>To</li>
<li>Pr</li>
<li>La</li>
</ul>
<div class="accor hide">En</div>
<ul>
<li>fa</li>
<li>Co</li>
<li>Co</li>
</ul>
<div class="accor hide">Sp</div>
</div>
</body>

关于javascript - css 转换在 for 循环 javascript 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36448442/

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