Задать вопрос
@Stanislav6

Почему не срабатывает querySelectorAll()?

Есть такая конструкция:
<main class="main-section">
  <nav class="main-nav">
    <div class="element"></div>
    <div class="element"></div>
    <div class="element"></div>
  <nav>
</main>


пытаюсь выбрать все элементы внутри nav чтобы привязать на них событие по клику:

const sectionMain = document.querySelector('.main-section');
const navTrigger = sectionMain.querySelectorAll('.element');

navTrigger.addEventListener('click', () => {
       toggleMenu();
    });
function toggleMenu() {
       sectionMain.classList.toggle('active');
    }


...и ничего. Заменяю querySelectorAll на querySelector — на первый элемент срабатывает.
  • Вопрос задан
  • 150 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
zkrvndm
@zkrvndm
Архитектор решений
Это вам не jQuery) Надо в цикле перебрать все элементы массива и отдельно на каждый элемент навесить обработчик. Если хотите, чтобы по волшебству обработчик на все элементы сам приклеился, используйте jQuery.
Ответ написан
Комментировать
georgi1984
@georgi1984
Нравится JavaScript
Это псевдо массив его надо перебирать
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@apoca1ipsis
navTrigger.forEach((item)=>{
        item.addEventListener('click', () => {
            toggleMenu();
        });
    })
Ответ написан
Комментировать
RimMirK
@RimMirK
Вроде человек. Вроде учусь. Вроде пайтону
я даже джаваскрипт толком не знаю!
const elements = document.querySelectorAll(".main-section .main-nav .element");

for (var element of elements) {
    element.addEventListener('click', function (e) {
        this.style.color = 'green';
    })
}
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
Набросал на коленке, просто показать идею

const sectionMain = document.querySelector('.main-section');

sectionMain.addEventListener('click', (event) => {
  if (event.target.classList.contains('element')) {
    sectionMain.classList.toggle('active');
  }
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы