Quote Originariamente inviata da lanvoel Visualizza il messaggio
Con il codice che segue vorrei mostrare la lista dei nodi figli di <body> usando innerHTML.
Usando innerHTML la prima volta, dopo il titolo, "<br>" è riconosciuto come <tag> e manda il testo a capo.
Usando innerHTML più volte, nel ciclo, "<br>" non è riconosciuto come <tag> e viene copiato come testo.
Perché e come si può ovviare? Grazie
Oltre a quanto ti ha suggerito KillerWorm, c'è un altro "errore": l'accesso al DOM va limitato il più possibile, soprattutto quando devi concatenare degli elementi in quel modo e fai uso di innerText o innerHTML.

Nel tuo esempio, devi inizializzare tutto l'HTML che vuoi inserire all'interno di una stringa, all'interno del ciclo concatenare l'HTML alla stringa stessa, e solo alla fine - in una operazione unica - vai a impostare con innerHTML il markup che hai generato e memorizzato nella stringa.

Con il tuo approccio, il browser deve fare parsing e modifica al DOM a ogni iterazione del ciclo, mentre con quello descritto sopra si fa un accesso unico.

Il DOM è il "collo di bottiglia" più importante quando si programmano dinamicamente le pagine tramite JavaScript.

Ciao!