Здравствуйте, есть такой вот код на JAVASCRIPT с рабочими спойлерами, они открываются поочередно, но не закрываются, как исправить проблему. Пробывал менять classList на toggle - не вышло. Прошу помощи, заранее спасиб.
<div data-modal="spoiler-1">spoiler-1</div>
<div class="spoiler__body close_prev" id="spoiler-1">
Содержимое spoiler-1
</div>
<div data-modal="spoiler-2">spoiler-2</div>
<div class="spoiler__body close_prev" id="spoiler-2">
Содержимое spoiler-2
<div data-modal="spoiler-3">spoiler-3</div>
<div class="spoiler__body" id="spoiler-3">
Содержимое spoiler-3
</div>
</div>
<style>
.spoiler__body {
position: absolute; width: 250px; height: 0; opacity: 1; visibility: visible; background: #BCC5C8;
border-radius: 4px; box-shadow: none; overflow: hidden; z-index: 2; box-shadow: inset 0 0 1px #888;
transition: 0.3s all; -webkit-transition: 0.3s all; -moz-transition: 0.3s all; -ms-transition: 0.3s all;
}
.spoiler__body.open {height: auto; padding: 1em;}
</style>
<script>
document.addEventListener('DOMContentLoaded', () => {
const mOpen = document.querySelectorAll('[data-modal]');
if (mOpen.length == 0) return;
const overlay = document.querySelector('.modal__overlay'),
modals = document.querySelectorAll('.modal__body, .spoiler__body'),
mClose = document.querySelectorAll('[data-close]');
for (let el of mOpen) {
el.addEventListener('click', function(e) {
let modalId = el.dataset.modal,
modal = document.getElementById(modalId);
if (modal.classList.contains("close_prev")) { modalClose(modal); }
modalShow(modal);
});
}
for (let el of mClose) {
el.addEventListener('click', modalClose);
}
document.addEventListener('keydown', modalClose);
function modalShow(modal) {
if (!modal.classList.contains("spoiler__body")) {
overlay.classList.add('open');
}
modal.classList.toggle('open');
}
function modalClose(event) {
if ( event.type != 'keydown' || event.keyCode === 27 ) {
for (let modal of modals) {
modal.classList.remove('open');
}
overlay.classList.remove('open');
}
}
})
</script>