2012-10-29 1 views
24

タイトルはかなり明確です: innerHTMLcreateTextNodeAppendと一緒に使用)との間に大きな違いがありますか?innerHTMLとcreateTextNodeを使用してスパンを埋めるのに大きな違いはありますか?

+0

違いはありません。 –

+3

何ですか? createTextNode()は、テキストをノードに追加するときに、innerHTMLよりも数倍高速です。 http://jsperf.com/innerhtml-and-createtextnode – devnull69

+0

@ devnull69を参照してください。このテストは、新しいコンテンツを複数回追加するためのテストです(そして、HTML追加の計算は自然に遅くなります)。しかし、単純にテキストを追加することは非常に似ています(innerHTMLは実際には少し高速です)。http://jsperf.com/innerhtml-and-createtextnode/2 – David

答えて

29

もちろんです。 createTextNodeは文字列をエスケープしてそのまま表示し、innerHTMLはhtmlのような文字列をDOMにレンダリングできます。必要がない場合は(リテラルを直接割り当てるなど、エスケープされていないタグがテキストに含まれていない限り)、textContent(またはIEの場合はinnerText)を使用できます。

しかし、すべてのブラウザで同じように奇形なしにサポートされているので、createTextNodeをお勧めします。

+0

"* ...スパンをテキストで埋める*" –

+3

はい。しかし、* text *にはタグなどが含まれている可能性があるので、私はOPに 'innerText' /' textContent'を少なくとも使用することを期待しています。 – Bergi

+1

@ Bergi - 代わりにtextContent/innerTextを含めるように答えを更新する必要がありますおそらくさらに好ましい)。 – RobG

0

私の理解では、innerHTMLの特定の操作によってすべてのバインドされたイベントが削除されるため、createTextNodeを使用することをお勧めします。

関連する問題