Переодически хочется вставить какую-то html конструкцию javascript'ом. Не всегда на создаваемые объекты нужно навешивать события. Для этого приходиться тупо писать строчку типа:
oElemen.innerHTML = '<a' + ' title="' + example + '">' + text + '</a>';
Из-за обилия кавычек, апострофов, < и > несложно запутаться, материться ну и так далее.
А хочется чего нибудь простого и структурированного:
html.element.create(
{
tag: 'div',
html: 'text nach',
id: 'suka',
title: 'похуй'
}
)
Сама функция:
var html = {
element:
{
create: function(o, f)
{
var sAttributes = '';
var sHtml = '';
for (var x in o)
{
if(x != 'html' && x != 'tag') sAttributes += ' ' + x + '="' + o[x] + '"';
if(x == 'html') sHtml = o[x];
if(x == 'tag') sTag = o[x];
}
return '<' + sTag + (sAttributes ? sAttributes : '') + '>' + sHtml + '</' + sTag + '>';
}
}
}
То есть объектом javascript можно описывать структуру html:
html.element.create({
tag: 'div',
class: 'slider',
html:
html.element.create({
tag: 'div',
class: 'scale'
}) +
html.element.create({
tag: 'div',
class: 'head'
}) +
html.element.create({
tag: 'div',
class: 'limit'
}) +
html.element.create({
tag: 'div',
class: 'overflow'
})
})
Результат:
<div class="slider">
<div class="scale"></div>
<div class="head"></div>
<div class="limit"></div>
<div class="overflow"></div>
</div>
Осталось дописать немного про самозакрывающиесь тэги типа <input ... >. Ну и для экономии вместо html.element.create назвать xhtml.create или e.create или _.add
Можно, наверное, jquery расширить — $('#element_id').addHtml
Небольшое обновление (06.07.2007) Еще проще описать такою строку просто JSON'ом. Когда лень будет побеждена — допишу.