@rays_ofgoodness

Почему не отрабатывает forEach?

Проблема в том, что есть функция которая стилизирует селекты через forEach, но есть исключение.
Один элемент динамически добавляется на страницу, и получается что не видно в ДОМ-е.
Когда он добавляется на страницу, forEach не срабатывает, и получается что верхний элемент стилизирован, а нижний нет, как можно решить эту проблему?
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@ForSureN1
frontend dev
Ну это ведь логично, что при новом рендере, ваша старая переменная которая содержит этот массив с элементами не пополнится новым элементом, вам нужно на моменте добавления нового элемента на странице, заново перезаписывать массив, + как вариант чтобы по новому не накидывался класс на элемент у которого уже есть, искать эти же элементы, которые не имеют 'active' класса
P.S.
пример
let array = document.querySelectorAll('.element:not(.active)');
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Дело в том, у какого объекта вызывать метод forEach()

Сейчас, очевидно, вызываете на массиве или статичном NodeList'е, в который свежедобавленный элемент не попадает.

Почувствуйте разницу между статичным и динамическим NodeList'ом. Первый содержит только те элементы, которые в него попали на момент создания. Динамический будет содержать и добавленные после.

querySelectorAll() возвращает статичный набор.

Решение, в общем – либо заново собирать элементы, и по ним запускать forEach(), или же получать динамическую коллекцию, используя соотв. метод.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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