Я создаю веб-приложение (используя прототип), которое требует добавления больших кусков HTML в DOM. Большинство из них - это строки, содержащие элементы со всеми атрибутами.
В настоящее время я сохраняю пустую строку HTML в переменной и
var blankRow = '<tr><td>'
+'<a href="{LINK}" onclick="someFunc(\'{STRING}\');">{WORD}</a>'
+'</td></tr>';
function insertRow(o) {
newRow = blankRow
.sub('{LINK}',o.link)
.sub('{STRING}',o.string)
.sub('{WORD}',o.word);
$('tbodyElem').insert( newRow );
}
Теперь это хорошо работает и денди, но это лучшая практика?
Мне нужно обновить код в blankRow, когда я обновляю код на странице, поэтому новые вставленные элементы одинаковы. Он становится сосательным, когда у меня есть 40 строк HTML, чтобы идти в пустое окно, а затем мне тоже нужно избегать этого.
Есть ли более простой способ? Я думал о urlencoding, а затем расшифровывал его перед вставкой, но это все равно означало бы blankRow и много побегов.
Что означало бы эхо-функция a la PHP и др.
$blankRow = <<<EOF
text
text
EOF;
Это означало бы отсутствие экранирования, но для этого все равно понадобилось бы blankRow.
Что вы делаете в этой ситуации?
решаемые
Закончено с использованием DOMBuilder в прототипе. Никаких других библиотек не требуется:
$w('a div p span img table thead td th tr tbody tfoot input').each(function(e) {
window['$' + e] = function() {
return new Element(e, arguments[0]);
}
});
newPart = $div({id: 'partition-4'})
.insert( $p()
.insert('<b>Stuff</b>')
)
.insert( $p({
id: 'a-p'})
.insert('<b>More stuff</b>')
);
$('parentDiv').insert(newPart);