我总是更喜欢可读性,除非性能差异很大。在这种一次性的情况下,这可能是一个边际差异。
在这样的一次性情况下,设置innerHTML
属性将是最容易阅读的。
但是,如果您在 JavaScript 中进行大量程序化内容生成,那么 DOM 选项会更简洁、更容易阅读和理解。
例子:
比较这段innerHTML
代码:
http://jsfiddle.net/P8m3K/1/
// Takes input of a value between 1 and 26, inclusive,
// and converts it to the appropriate character
function alphaToChar(alpha)
{
return String.fromCharCode('a'.charCodeAt() + alpha - 1);
}
var content = "<ul>";
for(i = 0; i < 10; ++i)
{
content += "<li>";
for(j = 1; j <= 26; ++j)
{
content += "<a href=\"" + alphaToChar(j) + ".html\">"
+ alphaToChar(j)
+ "</a>";
}
content += "</li>";
}
document.getElementById("foo").innerHTML = content;
到这个 DOM 代码:
http://jsfiddle.net/q6GB8/1/
// Takes input of a value between 1 and 26, inclusive,
// and converts it to the appropriate character
function alphaToChar(alpha)
{
return String.fromCharCode('a'.charCodeAt() + alpha - 1);
}
var list = document.createElement("ul");
for(i = 0; i < 10; ++i)
{
var item = document.createElement("li");
for(j = 1; j <= 26; ++j)
{
var link = document.createElement("a");
link.setAttribute("href", alphaToChar(j) + ".html");
link.innerText = alphaToChar(j);
item.appendChild(link);
}
list.appendChild(item);
}
document.getElementById("foo").appendChild(list);
在这个级别,他们开始变得非常相似的长度明智。
但是 DOM 代码将更容易维护,并且您不太可能犯难以诊断的拼写错误或错误,例如省略结束标记。您的元素将在您的文档中,或者它们不会。
- 对于更复杂的场景(例如构建树状菜单),您可能会先使用 DOM 代码。
- 在您必须将多种类型的内容附加在一起以构建具有更多异构内容的文档的情况下,它变成了灌篮。您不必确保在调用父附加代码之前调用您的子附加代码。
- 对于添加、删除或修改现有静态内容的场景,DOM 通常会胜出。
如果您开始进行复杂的 DOM 修改(我提到的最后一件事),您肯定会想要查看一个围绕 DOM 修改构建的库,例如 jQuery。