Il titolo è abbastanza chiaro: C'è qualche differenza importante tra innerHTML
e createTextNode
(utilizzato con Append
) per riempire un intervallo con testo?C'è una grande differenza tra innerHTML e l'uso di createTextNode per riempire una span?
risposta
Naturalmente. createTextNode
uscirà da qualsiasi stringa e mostrerà come sono, mentre innerHTML
potrebbe eseguire il rendering di stringhe di tipo HTML in un DOM. Se non si desidera che (a meno che non si sia sicuri che il testo non contenga tag senza escape, ad esempio quando si assegna direttamente un letterale), è possibile utilizzare textContent
(o innerText
per IE).
Eppure mi raccomando createTextNode
, perché tutti i browser lo supportano allo stesso modo senza alcuna stranezza.
"* ... per riempire un intervallo con testo *" –
Sì. Ma * testo * potrebbe contenere tag etc (non si sa mai), quindi mi aspetto che l'OP usi 'innerText' /' textContent' almeno – Bergi
@ Bergi-dovresti aggiornare la tua risposta per includere textContent/innerText come alternativa (forse anche preferito). – RobG
La mia comprensione è che alcune manipolazioni di innerHTML rimuovono tutti gli eventi associati, quindi è preferibile utilizzare createTextNode.
Non c'è differenza. –
Cosa? createTextNode() è di diverse grandezze più veloce di innerHTML quando si aggiunge il testo a un nodo. Vedi http://jsperf.com/innerhtml-and-createtextnode – devnull69
@ devnull69 Questo test è specifico per aggiungere nuovi contenuti più volte (e il calcolo delle aggiunte HTML sarà naturalmente più lento). Ma semplicemente l'aggiunta di testo è molto uguale (innerHTML è in realtà un po 'più veloce): http://jsperf.com/innerhtml-and-createtextnode/2 – David