【发布时间】:2011-03-27 16:05:45
【问题描述】:
我有以下代码:
tr = document.createElement("tr");
root.appendChild(tr);
td = document.createElement("td");
td.appendChild(document.createTextNode("some value"));
tr.appendChild(td);
嗯,这段代码和
root.innerHTML = "<tr><td>some value</td></tr>";
第一个版本可能是更好的选择,因为浏览器不必渲染字符串。但它太长了。特别是对于更大的结构,这种实现变得非常难以阅读。所以我觉得有更好的方法来写这个(没有任何 JavaScript 库)。你将如何实现它以使代码更具可读性? (现在我正在用 cmets 分离代码。)
【问题讨论】:
-
其实innerHTML比创建DOM节点要快得多。见quirksmode.org/dom/innerhtml.html。
-
@KennyTM:那些测试结果是两年前的。
-
@Gumbo:对于今天的 Gecko (Firefox) 和 Presto (Opera),innerHTML 仍然是最快的,但对于 WebKit (Chrome & Safari),“表格方法”更快。对于所有这 4 个浏览器来说,像 OP 那样创建 DOM 节点是最慢的。
-
@Gumbo:过去两年有大量浏览器没有升级。
-
@KennyTM:我想这取决于测试环境。因为我的测试还有其他结果。如果我平均测试的浏览器(Chrome、Firefox、Opera、Safari)的平均值,我会得到以下结果:W3C DOM 1 27.5 ms,W3C DOM 2 28.25 ms,表格方法 27.75 ms,innerHTML 1 30 ms,innerHTML 2 30女士。
标签: javascript dom innerhtml