Sono un principiante Javascript.
Sto iniziando la pagina web tramite window.onload, devo trovare un mucchio di elementi con il loro nome di classe ( slide) e ridistribuirli in diversi nodi in base a una logica. Ho una funzione Distribute(element)che prende un elemento come input e fa la distribuzione. Voglio fare qualcosa di simile (come descritto ad esempio qui o qui ):
var slides = getElementsByClassName("slide");
for(var i = 0; i < slides.length; i++)
{
Distribute(slides[i]);
}
tuttavia questo non fa la magia per me, perché in getElementsByClassNamerealtà non restituisce array, ma a NodeList, che è ...
... questa è la mia speculazione ...
... viene modificato all'interno della funzione Distribute(l'albero DOM viene modificato all'interno di questa funzione e viene eseguita la clonazione di alcuni nodi). For-eachneanche la struttura del loop aiuta.
Le diapositive variabili agiscono in modo davvero indeterministico, attraverso ogni iterazione cambia selvaggiamente la lunghezza e l'ordine degli elementi.
Qual è il modo corretto per scorrere NodeList nel mio caso? Stavo pensando di riempire un array temporaneo, ma non sono sicuro di come farlo ...
MODIFICARE:
Fatto importante che ho dimenticato di menzionare è che potrebbe esserci una diapositiva dentro un'altra, questo è in realtà ciò che cambia la slidesvariabile come ho appena scoperto grazie all'utente Alohci .
La soluzione per me è stata quella di clonare prima ogni elemento in un array e poi passare l'array uno alla volta Distribute().
Distribute()funzione è troppo lunga e complessa per essere copiata qui, ma sono certo che sto cambiando la struttura DOM all'interno, sto anche duplicando (clonando) elementi lì. Quando eseguo il debug, posso vedere le slidesmodifiche della variabile ogni volta che viene passata all'interno.
getElementsByClassName()restituisca un live nodeList, quindi quando gli elementi con quella classe vengono aggiunti la lunghezza del nodeListsu cui stai iterando le modifiche.

