同じクラスを持つDIVのグループのclassName
プロパティを変更するためにJavaScript forループを使用しました。
className
プロパティを変更して各divの外観を変更しようとしています。その結果、CSSの移行がアクティブになり、各DIVに影響します。
問題は、遷移のみがが最初のDIVに影響することです。ここでCSS - ループのJavaScriptでトランジションが正しく機能しない
は私のHTMLコードです:ここで
<body onload="init()">
<div id="menu">
<div class="accor hide" id="chosen">
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
とDIVをクリックすると、 "選択"私は、クラス "accor"を持つすべてのDIVをjQueryのようにスライドさせたいと思っています$.fn.slideDown(...);
。
JavaScriptを少し変更すると、最初の2つのDIVにトランジションが適用されます。ここで
は私に変更するJavaScriptです:私はループのために使用された場合(上記)i
が最初0
とi
に設定したためであると考え
hideDivs = document.getElementsByClassName('accor hide');
hideDivs[0].className = 'accor';
hideDivs = document.getElementsByClassName('accor hide');
hideDivs[0].className = 'accor';
は、遷移が最初のDIVをもたらしたので、増加しませんでした。毎回あなたがクラスhide
を要素から削除されtoggleDivs();
を実行するため
可能であれば、HTML、CSS、JavaScriptを分けて、コードを理解して読みやすくしてください。 EG:あなたはJavaScriptを変更して 'window.addEventListener(" load "、init、false);' –