2012-10-29 118 views
24

標題很清楚: innerHTMLcreateTextNode(用於Append)之間是否有任何主要區別來填充文本?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

是的。但*文本*可能包含標籤等(你永遠不知道),所以我希望OP使用'innerText' /'textContent'至少 – Bergi

+1

@ Bergi-你應該更新你的答案,包括textContent/innerText作爲替代(甚至可能是首選)。 – RobG

0

我的理解是innerHTML的某些操作會移除所有綁定的事件,因此使用createTextNode更可取。

相關問題