var someTree = {
tagName: "table", //html tag
subTags: [ //вложенные тэги
{
tagName: "tr",
subTags: [
{
tagName: "td",
attrs: {
style: "'color: #000'"
},
text: "some text",
},
{
tagName: "td",
text: "some text 2",
}
]
},
],
attrs:
{
border: 1,
style: "'border: 1px solid #ccc'",
cellspacing: 0
},
}
var str = "";
str += "<" + someTree.tagName + ' ';
for (var i = 0; i < Object.keys(someTree.attrs).length; i++) {
str += Object.keys(someTree.attrs)[i] + '=' + someTree.attrs[Object.keys(someTree.attrs)[i]] + " ";
}
str += ">";
for (var i = 0; i < someTree.subTags.length; i++) { // вывожу внутренние теги
str += "<" + someTree.subTags[i].tagName + ' ';
if(someTree.subTags[i].attrs){ // если у тега нет атрибутов то цикл не исполняется
for (var j = 0; j < Object.keys(someTree.subTags[i].attrs).length; j++) {
str += Object.keys(someTree.subTags[i].attrs)[j] + '=' + someTree.subTags[i].attrs[Object.keys(someTree.subTags[i].attrs)[j]] + " ";
}
}
str += ">";
if(someTree.subTags[i].text)
str += someTree.subTags[i].text;
for (var k = 0; k < someTree.subTags[i].subTags.length; k++) {
str += "<" + someTree.subTags[i].subTags[k].tagName + ' ';
if(someTree.subTags[i].subTags[k].attrs){ // если у тега нет атрибутов то цикл не исполняется
for (var j = 0; j < Object.keys(someTree.subTags[i].subTags[k].attrs).length; j++) {
str += Object.keys(someTree.subTags[i].subTags[k].attrs)[j] + '=' + someTree.subTags[i].subTags[k].attrs[Object.keys(someTree.subTags[i].subTags[k].attrs)[j]] + " ";
}
}
str += ">";
if(someTree.subTags[i].subTags[k].text)
str += someTree.subTags[i].subTags[k].text;
str += "" + someTree.subTags[i].subTags[k].tagName + ' >';
}
str += "" + someTree.subTags[i].tagName + ">";
}
str += "" + someTree.tagName + ">";
document.write(str);