Я всегда предпочитаю удобочитаемость, если разница не слишком велика. В разовом случае это, вероятно, будет незначительной разницей.
В таком случае, как этот, проще всего прочитать свойство 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 .