Javascript 来自json(树)JS的嵌套html
我有一个像这样的jsonJavascript 来自json(树)JS的嵌套html,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我有一个像这样的json { desc: "text", nodes: [{ desc: "text1", nodes: [ {desc: "text3"}, {desc: "text4"} ]}, {desc: "text2", nodes: [ {desc: "text5"} ]} ] } 我的问题是创建嵌套的html对象,
{
desc: "text",
nodes: [{
desc: "text1",
nodes: [
{desc: "text3"},
{desc: "text4"}
]},
{desc: "text2",
nodes: [
{desc: "text5"}
]}
]
}
我的问题是创建嵌套的html对象,如:
<div>
text
<div> text1
<div> text3 </div>
<div> text4 </div>
</div>
<div> text2
<div> text5 </div>
</div>
</div>
它可以是纯文本(很容易解析),但我无法处理这个问题,我尝试了递归,但它完全崩溃了:/
最重要的是,您缺少的是您没有将生成的
el
追加到DOM,因此它是全部创建的,但从未追加。使用.appendChild(节点)
实现所需:
function buildTree(tree) {
let node = tree;
var el = document.createElement('div');
el.innerHTML = node.desc;
if (node.nodes) {
node.nodes.forEach(function(n) {
el.appendChild(buildTree(n));
});
}
return el;
}
var tree = buildTree(data);
document.querySelector('body').appendChild(tree);
见下面的概念证明:
var数据={
描述:“文本”,
节点:[{
描述:“文本1”,
节点:[{
描述:“文本3”
},
{
描述:“文本4”
}
]
},
{
描述:“文本2”,
节点:[{
描述:“文本5”
}]
}
]
};
函数构建树(树){
让节点=树;
var el=document.createElement('div');
el.innerHTML=node.desc;
if(node.nodes){
node.nodes.forEach(函数(n){
el.appendChild(buildTree(n));
});
}
返回el;
}
var-tree=buildTree(数据);
document.querySelector('body').appendChild(树)代码>
div{
左侧填充:10px;
}
向我们展示您已经尝试过的内容您需要的是递归。查看您已经尝试的内容会有很大帮助,这样我们可以帮助诊断错误
function buildTree(tree) {
let node = tree;
var el = document.createElement('div');
el.innerHTML = node.desc;
if (node.nodes) {
node.nodes.forEach(function(n) {
el.appendChild(buildTree(n));
});
}
return el;
}
var tree = buildTree(data);
document.querySelector('body').appendChild(tree);