iamlorddop
@iamlorddop

Как сделать чтобы при нажатии на кнопку открывался только один элемент, а не все?

Этот код срабатывает так, что при нажатии на кнопку показываются все скрытые блоки, а нужно чтобы проявлялся только один из них при нажатии на кнопку

let spoiler = document.querySelectorAll('.spoilers-item');
let spoilerBig = document.querySelectorAll('.spoilers-item__big');
let spoilerBtn = document.querySelectorAll('.isshow');
spoilerBtn.forEach(e => {
  e.addEventListener( "click" , () => {
    spoilerBig.forEach(element => {
      element.classList.toggle('is-show');
    });
  });
})
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Предлагаю вам изучить инструменты, которые пытаетесь использовать. В смысле - откройте описание метода forEach, и разберитесь, что получает коллбек в качестве параметров. Ну а как обратиться к элементу коллекции по его индексу, вы, надеюсь, знаете.

А вообще, если у каждой из пар кнопка-блок есть отдельный общий предок, то никаких forEach'ей не надо:

document.addEventListener('click', ({ target }) => {
  if (target.classList.contains('класс кнопки')) {
    target
      .closest('селектор общего предка пары кнопка-блок')
      .querySelector('селектор блока')
      .classList
      .toggle('класс, показывающий блок');
  }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы