Saya pemula Javascript.
Saya memulai halaman web melalui window.onload
, saya harus menemukan banyak elemen dengan nama kelas mereka ( slide
) dan mendistribusikannya ke node yang berbeda berdasarkan beberapa logika. Saya memiliki fungsi Distribute(element)
yang mengambil elemen sebagai input dan melakukan distribusi. Saya ingin melakukan sesuatu seperti ini (seperti diuraikan misalnya di sini atau di sini ):
var slides = getElementsByClassName("slide");
for(var i = 0; i < slides.length; i++)
{
Distribute(slides[i]);
}
Namun ini tidak melakukan keajaiban bagi saya, karena getElementsByClassName
sebenarnya tidak mengembalikan array, tapi a NodeList
, yang ...
... ini spekulasi saya ...
... diubah di dalam fungsi Distribute
(pohon DOM sedang diubah di dalam fungsi ini, dan kloning node tertentu terjadi). For-each
struktur lingkaran juga tidak membantu.
Variabel slide bertindak benar-benar tidak deterministik, melalui setiap iterasi itu mengubah panjang dan urutan elemennya secara liar.
Apa cara yang benar untuk melakukan iterasi melalui NodeList dalam kasus saya? Saya sedang berpikir untuk mengisi beberapa larik sementara, tetapi tidak yakin bagaimana melakukan itu ...
EDIT:
Fakta penting yang lupa saya sebutkan adalah bahwa mungkin ada satu slide di dalam yang lain, ini sebenarnya yang mengubah slides
variabel seperti yang baru saja saya ketahui berkat pengguna Alohci .
Solusi bagi saya adalah mengkloning setiap elemen ke dalam array terlebih dahulu dan meneruskan array satu per satu ke Distribute()
setelahnya.
Distribute()
berfungsi untuk panjang dan kompleks untuk disalin di sini, tapi saya yakin bahwa saya mengubah dalam struktur DOM, saya juga duplikasi (kloning) unsur sana. Ketika saya men-debugnya, saya bisa melihat variabel slides
berubah setiap kali dilewatkan di dalam.
getElementsByClassName()
mengembalikan siaran langsung nodeList
, sehingga elemen dengan kelas itu ditambahkan panjang di nodeList
mana Anda mengulangi perubahan.