ฉันเป็นมือใหม่ 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
วิธีแก้ปัญหาสำหรับฉันคือการโคลนแต่ละองค์ประกอบลงในอาร์เรย์ก่อนและส่งอาร์เรย์ทีละรายการไปในDistribute()
ภายหลัง