【发布时间】:2012-01-17 17:04:08
【问题描述】:
我已经看到了一些向 DOM 添加元素的不同方法。例如,最流行的似乎是
document.getElementById('foo').innerHTML ='<p>Here is a brand new paragraph!</p>';
或
newElement = document.createElement('p');
elementText = document.createTextNode('Here is a brand new parahraph!');
newElement.appendChild(elementText);
document.getElementById('foo').appendChild(newElement);
但我不确定做任何一个的好处。是否有关于何时应该完成另一个的经验法则,或者其中一个完全是错误的?
【问题讨论】:
-
谢谢,已修复。太习惯用jQuery写了。
-
innerHTML('<p>Here is a brand new paragraph!</p>');应该是innerHTML = '<p>Here is a brand new paragraph!</p>';我认为? -
这里的各种答案:
innerHTML肯定不更快。这是旧浏览器 (IE) 的误报。document.createElement现在在许多浏览器中进行了高度优化。见:jsperf.com/dom-table-generation -
另外有趣的是 OWASP 的 DOM 代码“备忘单”(谴责
innerHTML):owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet -
@MattMcDonald - 我同意 Nickolay 的观点;这不是一个很有代表性的例子。看到这个:jsperf.com/innerhtml-vs-w3c-dom
标签: javascript dom appendchild