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