Поместить dom элементы в массив после цикла
Ребята, подскажите, как решить следующую задачу:
У меня есть набор dom элементов, которые я получил выборкой: let images = document.querySelectorAll('.elem) затем через цикл и условие я отфильтровал лишь нужные мне элементы (в данном случае я вывел те элементы, у которых нет атрибута id): for (let i = 0; i < images.length; i++) { if (images[i].getAttribute('id')) { continue } let pic = images[i] console.log(pic) } В итоге я получил следующий набор элементов: <div class="elem"> <p>1</p> </div> <div class="elem"> <p>2</p> </div> <div class="elem"> <p>3</p> </div> <div class="elem"> <p>1</p> </div> <div class="elem"> <p>2</p> </div> <div class="elem"> <p>3</p> </div> Теперь, собственно, вопрос: Я хочу снова пройтись циклом по этим элементам, но так как это не массив, то: images[i].length вернет: undefined Как же мне верно реализовать следующую идею? |
Это не массив, но коллекция.
У коллекции есть свойство length, нужно обращаться не к элементу коллекции, а к самой коллекции: images.length Стоит отметить, что чем меньше циклов вы используете, тем быстрее будет ваш код исполняться. Что вам мешает выполнить все манипуляции над элементами в единственном цикле? Для более удобного перебора элементов коллекции её можно привести к массиву и воспользоваться одним из перебирающих методов. Коллекцию к массиву можно привести так: const imagesArray=[].slice.call(images); |
Цитата:
images = document.querySelectorAll('.elem:not([id])'); |
Спасибо, ребята. Что касается советов, то я прислушаюсь, так ка ни в коем случае не претендую на то, что мои решения единственно верные )
|
Часовой пояс GMT +3, время: 06:38. |