У меня есть аккордеон, который работает очень хорошо, он хорошо выглядит на сайте и работает так, как должен. Тем не менее, я пытаюсь добавить к нему еще некоторые функции JavaScript, чтобы сделать его более профессиональным.Открывать только одну аккордеонную вкладку за один раз
В настоящее время аккордеон позволяет одновременно открывать несколько панелей, т. Е. Если я открою одну вкладку, а затем откройте другую вкладку, обе вкладки будут открыты одновременно. И единственный способ закрыть эти панели - это перехватить заголовок.
Что бы мне хотелось, это код JavaScript, который предотвращает одновременное открытие нескольких вкладок, поэтому, если я нажму на новую панель, сначала должен закрыть существующую открытую панель. Вот мой HTML код для аккордеона:
<div class="accordion"><b>Heading 1</b></div>
<div class="panel">
<p class="text-light">Text 1</p>
</div>
<div class="accordion"><b>Heading 2</b></div>
<div class="panel">
<p class="text-light">Text 2</p>
</div>
Вот мой код JavaScript в отдельный файл JavaScript, который в настоящее время позволяет несколько вкладок, чтобы быть открытыми в одно время
var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].onclick = function() {
this.classList.toggle("active");
this.nextElementSibling.classList.toggle("show");
}
}
Не уверен, что если вам нужны все CSS, но есть CSS для отображения панели
div.panel.show {
display: block !important;
}
Надеюсь, кто-то может помочь! Заранее спасибо!
Возможный дубликат [как сделать твиттер бутстрап аккордеон держать одну группу открытой] (http://stackoverflow.com/questions/15725717/how-do-you-make-twitter-bootstrap-accordion-keep-one- group-open) –
Просто пройдите через все из них, установите их в 'inactive' и' hide'. Затем вы активируете и отобразите выбранный. – melancia
@NalinAggarwal, где OP говорит, что он использует Bootstrap? –