Почему событие срабатывает только на первый элемент?
Здрасти, хочу сделать появление списка по клику по button, но скрипт работает только на первую button. Плчему? спс
window.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('.second-menu-btn').forEach(function (Btn) {
Btn.addEventListener('click', function (event) {
const path = event.currentTarget.dataset.path
document.querySelectorAll('.wrap2').forEach(function (
Content) {
Content.classList.remove(
'is-active')
})
document.querySelector('.wrap2').classList
.add('is-active')
})
})
});
<li class="section__top-nav-second-menu-item" id="list-initial-1">
<button class="second-menu-btn">
Реализм
<svg class="arrow-for-second-menu-btn" width="12" height="7" viewBox="0 0 12 7"
fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 1L6 6L1 1" stroke="white" />
</svg>
</button>
<div class="wrap2" id="list-items">
<ul class="dop-list-items" data-simplebar>
<li class="dop-list-item list-img-1">
<a href="#" class="dop-list-item-link">Тинторетто</a>
</li>
<li class="dop-list-item list-img-2">
<a href="#" class="dop-list-item-link">Фридрих</a>
</li>
<li class="dop-list-item list-img-3">
<a href="#" class="dop-list-item-link">Леонардо</a>
</li>
<li class="dop-list-item list-img-4">
<a href="#" class="dop-list-item-link">Верроккьо</a>
</li>
<li class="dop-list-item list-img-1">
<a href="#" class="dop-list-item-link">Тинторетто</a>
</li>
<li class="dop-list-item list-img-2">
<a href="#" class="dop-list-item-link">Фридрих</a>
</li>
<li class="dop-list-item list-img-3">
<a href="#" class="dop-list-item-link">Леонардо</a>
</li>
<li class="dop-list-item list-img-4">
<a href="#" class="dop-list-item-link">Верроккьо</a>
</li>
</ul>
</div>
</li>
.wrap2 скрыт dispal none. нажимая на second-menu-btn у класса wrap2 display none меняется на display block
Ответы (1 шт):
Автор решения: Макс к
→ Ссылка
Если у вас есть несколько списков, каждый из которых открывается при клике по кнопке, то, судя по вашей разметке, нужно делать видимым, первого "соседа" этой кнопки. Т.е. как-то так:
let btns = document.querySelectorAll('.second-menu-btn');
let lists = document.querySelectorAll('.wrap2');
for (let btn of btns) {
btn.addEventListener('click', (e) => {
let delegateTarget = e.target.nextElementSibling
delegateTarget.classList.add('active');
for (let list of lists){
if(list!==delegateTarget){
list.classList.remove('active')
}
}
})
}
.wrap2{
display: none;
}
.active {
display: block;
}
<li class="section__top-nav-second-menu-item" id="list-initial-1">
<button class="second-menu-btn">
Реализм
<svg class="arrow-for-second-menu-btn" width="12" height="7" viewBox="0 0 12 7"
fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 1L6 6L1 1" stroke="white" />
</svg>
</button>
<div class="wrap2" id="list-items">
<ul class="dop-list-items" data-simplebar>
<li class="dop-list-item list-img-1">
<a href="#" class="dop-list-item-link">Тинторетто</a>
</li>
<li class="dop-list-item list-img-2">
<a href="#" class="dop-list-item-link">Фридрих</a>
</li>
<li class="dop-list-item list-img-3">
<a href="#" class="dop-list-item-link">Леонардо</a>
</li>
<li class="dop-list-item list-img-4">
<a href="#" class="dop-list-item-link">Верроккьо</a>
</li>
<li class="dop-list-item list-img-1">
<a href="#" class="dop-list-item-link">Тинторетто</a>
</li>
<li class="dop-list-item list-img-2">
<a href="#" class="dop-list-item-link">Фридрих</a>
</li>
<li class="dop-list-item list-img-3">
<a href="#" class="dop-list-item-link">Леонардо</a>
</li>
<li class="dop-list-item list-img-4">
<a href="#" class="dop-list-item-link">Верроккьо</a>
</li>
</ul>
</div>
</li>
<li class="section__top-nav-second-menu-item" id="list-initial-1">
<button class="second-menu-btn">
Реализм
<svg class="arrow-for-second-menu-btn" width="12" height="7" viewBox="0 0 12 7"
fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 1L6 6L1 1" stroke="white" />
</svg>
</button>
<div class="wrap2" id="list-items">
<ul class="dop-list-items" data-simplebar>
<li class="dop-list-item list-img-1">
<a href="#" class="dop-list-item-link">Тинторетто</a>
</li>
<li class="dop-list-item list-img-2">
<a href="#" class="dop-list-item-link">Фридрих</a>
</li>
<li class="dop-list-item list-img-3">
<a href="#" class="dop-list-item-link">Леонардо</a>
</li>
<li class="dop-list-item list-img-4">
<a href="#" class="dop-list-item-link">Верроккьо</a>
</li>
<li class="dop-list-item list-img-1">
<a href="#" class="dop-list-item-link">Тинторетто</a>
</li>
<li class="dop-list-item list-img-2">
<a href="#" class="dop-list-item-link">Фридрих</a>
</li>
<li class="dop-list-item list-img-3">
<a href="#" class="dop-list-item-link">Леонардо</a>
</li>
<li class="dop-list-item list-img-4">
<a href="#" class="dop-list-item-link">Верроккьо</a>
</li>
</ul>
</div>
</li>