2012-10-29 119 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更可取。

相关问题