乍一看,似乎我正在寻找一个简单的JS模板引擎,但我正在寻找的更复杂。起初我想过自己编写这个,但我想的越多,但我无法想象以前没有做过。
简单地说:我正在寻找能够采用以下对象文字并构建以下HTML的东西。
{
tagName : 'div',
className : 'container',
children :
[
{
tagName : 'h1',
className : 'page-title',
text : 'My Awesome Page!'
},
{
tagName : 'a',
className : 'class-i-gave-to-this-link',
text : 'Check out my other awesome page!',
attr :
{
href: 'http://my.awesome-page.com/'
}
}
]
}
所需的HTML:
<div class="container">
<h1 class="page-title">My Awesome Page!</h1>
<a class="class-i-gave-to-this-link" href="http://my.awesome-page.com/">Check out my other awesome page!</a>
</div>
答案 0 :(得分:2)
这是我对递归解决方案的扼要:
var jsonToHtml = function(node) {
var tag = document.createElement(node.tagName);
tag.className = node.className || "";
if(node.text) {
tag.innerHTML = node.text;
}
if(node.children) {
for(var i = 0; i < node.children.length; i++) {
tag.appendChild(jsonToHtml(node.children[i]));
}
}
if(node.attr) {
for(var key in node.attr) {
tag.setAttribute(key, node.attr[key]);
}
}
return tag;
};
这是一个jsFiddle