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

Не работает document.querySelectorAll. Почему?

Здравствуйте, как только не пробовал решить эту проблему ни чего не помогло.
Есть код:
const modal = document.querySelector('#my-modal');
const modalBtn = document.querySelectorAll('.modal-btn li');
const closeBtn = document.querySelector('.close2');

// Events
modalBtn.addEventListener('click', openModal);
closeBtn.addEventListener('click', closeModal);
window.addEventListener('click', outsideClick);

// Open
function openModal() {
  modal.style.display = 'block';
}

// Close
function closeModal() {
  modal.style.display = 'none';
}

// Close If Outside Click
function outsideClick(e) {
  if (e.target == modal) {
    modal.style.display = 'none';
  }
}


Вот код кнопки:
<li>
<button class="modal-btn bth-head">Получить консультацию</button>
</li>


Если сделать так то работает только на одной кнопке, а надо на трех:

const modal = document.querySelector('#my-modal');
const modalBtn = document.querySelector('#modal-btn');
const closeBtn = document.querySelector('.close2');

// Events
modalBtn.addEventListener('click', openModal);
closeBtn.addEventListener('click', closeModal);
window.addEventListener('click', outsideClick);

// Open
function openModal() {
  modal.style.display = 'block';
}

// Close
function closeModal() {
  modal.style.display = 'none';
}

// Close If Outside Click
function outsideClick(e) {
  if (e.target == modal) {
    modal.style.display = 'none';
  }
}


Как решить данную проблему?
  • Вопрос задан
  • 3976 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
querySelectorAll возвращает массив(точнее коллекцию элементов), и вы массиву пытаетесь назначить событие.
Событие нужно назначать каждому элементу массива

const modalBtns = document.querySelectorAll('.modal-btn li');
modalBtns.forEach(b=>b.addEventListener('click', openModal));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Нельзя размещать несколько одинаковых id в пределах одного DOM-дерева (на одной странице, грубо говоря).
Научитесь в traversing.

вот вам пример, где каждая кнопка работает со своим блоком, но в коде вообще нет никаких ID.
Ответ написан
Ваш ответ на вопрос

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

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