Я начинаю Javascript.
Я запускаю веб-страницу через window.onload
, мне нужно найти кучу элементов по их имени класса (slide
) и перераспределить их на разные узлы на основе некоторой логики. У меня есть функция Distribute(element)
, которая принимает элемент как входной и выполняет распределение. Я хочу сделать что-то вроде этого (как описано здесь здесь или здесь):
var slides = getElementsByClassName("slide");
for(var i = 0; i < slides.length; i++)
{
Distribute(slides[i]);
}
однако это не делает для меня волшебство, потому что getElementsByClassName
фактически не возвращает массив, а NodeList
, который...
... это мое предположение...
... изменяется внутри функции Distribute
(дерево DOM изменяется внутри этой функции, и происходит клонирование некоторых узлов). Строковая структура For-each
не помогает.
Переменные слайды действуют на самом деле не детерминированно, через каждую итерацию он сильно изменяет длину и порядок элементов.
Каков правильный способ итерации через NodeList в моем случае? Я думал о заполнении некоторого временного массива, но не знаю, как это сделать...
EDIT:
Важным фактом я забыл упомянуть, что может быть один слайд внутри другого, на самом деле это изменяет переменную slides
, как я только что узнал благодаря пользователю Alohci.
Решение для меня заключалось в том, чтобы сначала клонировать каждый элемент в массив и передать его по очереди один раз в Distribute()
.