2012-10-29 12 views
24

Tytuł jest całkiem jasny: Czy istnieje jakaś główna różnica między innerHTML i createTextNode (używane z Append) w celu wypełnienia span tekstem?Czy istnieje jakaś główna różnica między innerHTML i używanie createTextNode do wypełnienia zakresu?

+0

Nie ma różnicy. –

+3

Co? createTextNode() jest o kilka wielkości szybszy od innerHTML podczas dołączania tekstu do węzła. Zobacz http://jsperf.com/innerhtml-and-createtextnode – devnull69

+0

@ devnull69 Ten test jest przeznaczony do wielokrotnego dołączania nowych treści (a obliczanie dodatków HTML będzie oczywiście wolniejsze). Ale po prostu dodawanie tekstu jest bardzo równe (innerHTML jest w rzeczywistości odrobinę szybszy): http://jsperf.com/innerhtml-and-createtextnode/2 – David

Odpowiedz

29

Oczywiście. createTextNode będzie uciec od wszystkich ciągów znaków i pokazać je w stanie, podczas gdy innerHTML może renderować ciągi podobne do html do DOM. Jeśli nie chcesz tego (chyba że masz pewność, że tekst nie zawiera tagów bez zmiany znaczenia, np. Przy bezpośrednim przypisywaniu literału), możesz użyć textContent (lub innerText dla IE).

Mimo to polecam createTextNode, ponieważ wszystkie przeglądarki obsługują go równo bez żadnych dziwactw.

+0

"* ... aby wypełnić rozpiętość z tekstem *" –

+3

Tak. Ale * tekst * może zawierać znaczniki itp. (Nigdy nie wiadomo), więc oczekiwałbym, że OP użyje 'innerText' /' textContent' co najmniej – Bergi

+1

@ Bergi - powinieneś zaktualizować swoją odpowiedź, dodając textContent/innerText jako alternatywę (być może nawet bardziej preferowane). – RobG

0

Rozumiem, że niektóre manipulacje innerHTML usuwają wszystkie powiązane zdarzenia, więc najlepiej jest użyć metody createTextNode.

Powiązane problemy