【发布时间】:2021-07-08 07:00:15
【问题描述】:
我需要一些帮助来修复手风琴组件中的错误:
- 在下面的示例中,请单击面板 1 打开并再次单击面板 1 将其关闭。
- 然后单击面板 2。您将看到面板 1 和面板 2 同时激活类,这是错误的。应仅将活动类添加或删除到被点击的手风琴面板中。
请注意,我需要保持相同的功能,即当另一个手风琴面板打开时折叠。
非常感谢您的帮助和指导。 谢谢。
var acc = document.getElementsByClassName("accordion");
var i;
var prevExpandedPanel = null;
for (i = 0; i < acc.length; i++) {
acc[i].addEventListener("click", function() {
if (prevExpandedPanel && this !== prevExpandedPanel) {
prevExpandedPanel.classList.toggle("active");
prevExpandedPanel.nextElementSibling.style.maxHeight = null;
}
this.classList.toggle("active");
var panel = this.nextElementSibling;
if (panel.style.maxHeight) {
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
prevExpandedPanel = this;
});
}
.accordion {
background-color: #eee;
color: #444;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
transition: 0.4s;
}
.active, .accordion:hover {
background-color: #f8f8f8;
}
.accordion:after {
content: '\002B';
color: #777;
font-weight: bold;
float: right;
margin-left: 5px;
}
.active:after {
content: "\2212";
}
.panel {
padding: 0 18px;
background-color: white;
max-height: 0;
overflow: hidden;
transition: max-height 0.2s ease-out;
}
<button class="accordion">Panel 1</button>
<div class="panel">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button class="accordion">Panel 2</button>
<div class="panel">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button class="accordion">Panel 3</button>
<div class="panel">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
【问题讨论】:
-
对我来说,当我点击面板 2 时,面板 1 会关闭
-
单击面板 1 打开并再次单击面板 1 将其关闭。然后点击 Panel 2。您会看到 Panel 1 和 Panel 2 同时激活了类。
标签: javascript html css accordion collapse