Поместить 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, время: 07:10. |