关于js的树形表的生成

正在努力的PP君 2013-01-16 01:47:23
我这里有个这样的树形对象

var i1={
id:1,
name:1,
Is:[{
id:2,
name:2
},{
id:3,
name:3,
Is:[{
id:4,
name:4,
Is:[{
id:6,
name:6
},{
id:7,
name:7
}]
},{
id:5,
name:5,
Is:[{
id:8,
name:8
},{
id:9,
name:9
}]

}]
}]

}



我现在想有一个函数,使得他可以输出一个HTML的表格,这样会不会很难?
...全文
135 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 8 楼 zzgzzg00 的回复:
function create(x){ var table=document.createElement("table"); var tr1=document.createElement("tr"); var tr2=document.createElement("tr"); for(var i in x){ if(i=="id"){ var td=docum……
非常有用啊!!
似梦飞花 2013-01-16
  • 打赏
  • 举报
回复
function create(x){ var table=document.createElement("table"); var tr1=document.createElement("tr"); var tr2=document.createElement("tr"); for(var i in x){ if(i=="id"){ var td=document.createElement("td"); td.innerHTML=x[i]; tr1.appendChild(td); }else if(i=="Is"){ var td=document.createElement("td"); creates(x[i],td); tr2.appendChild(td); } } table.appendChild(tr1); table.appendChild(tr2); document.body.appendChild(table); } function creates(x,d){ var table=document.createElement("table"); var tr1=document.createElement("tr"); var tr2=document.createElement("tr"); for(var i=0;i<x.length;i++){ for(var j in x[i]){ if(j=="id"){ var td=document.createElement("td"); td.innerHTML=x[i][j]; tr1.appendChild(td); }else if(j=="Is"){ var td=document.createElement("td"); creates(x[i][j],td); tr2.appendChild(td); } } } table.appendChild(tr1); table.appendChild(tr2); d.appendChild(table); } window.onload=function(){ create(i1); } id为2的没有子对象 所以导致往左漂了 回去看看 先留下bug的代码
  • 打赏
  • 举报
回复
表格形式table啊,不是树形菜单的说。
mrtuzi 2013-01-16
  • 打赏
  • 举报
回复
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type='text/javascript' src='js/jquery-1.4.4.min.js'></script>
</head>

<body>
<div id='tree'></div>
<script>
var data={id:1,name:1,Is:[{id:2,name:2},{id:3,name:3,Is:[{id:4,name:4,Is:[{id:6,name:6},{id:7,name:7}]},{id:5,name:5,Is:[{id:8,name:8},{id:9,name:9}]}]}]};
function buildtree(data,lv){
var rt=[];
if(!lv)rt.push("<div style='padding-left:12px;'> id:"+data.id+"name:"+data.name);
if(data.Is){
for(var i=0;i<data.Is.length;i++){
rt.push("<div style='padding-left:12px;'>"+(i+1==data.Is.length?"└":"├")+" id : "+data.Is[i].id+" , name : "+data.Is[i].name);
if(data.Is[i].Is){
rt.push(buildtree(data.Is[i],1));
}
rt.push("</div>");
}
}
return rt.join('');
}
$('#tree').html(buildtree(data));

</script>
</body>
</html>

已解决
  • 打赏
  • 举报
回复
引用 3 楼 bbjbepzz 的回复:
输入什么样的HTML表格?画个效果来

bbjbepzz 2013-01-16
  • 打赏
  • 举报
回复

var i1={
id:1,
name:1,
Is:[{
id:2,
name:2
},{
id:3,
name:3,
Is:[{
id:4,
name:4,
Is:[{
id:6,
name:6
},{
id:7,
name:7
}]
},{
id:5,
name:5,
Is:[{
id:8,
name:8
},{
id:9,
name:9
}]

}]
}]

};
function fn(data , deep){
var split = '';
for(var i = 0 ; i < deep ; ++i){
split+=' ';
}
split+='|-';
console.log(split+data.name);
if(typeof data.Is!='undefined'){
for(var i in data.Is){
fn(data.Is[i] , deep+1);
}
}
}
fn(i1,0);


效果图



打开google浏览器,切换到Console选项卡,看下是不是你要效果。
bbjbepzz 2013-01-16
  • 打赏
  • 举报
回复
输入什么样的HTML表格?画个效果来
  • 打赏
  • 举报
回复
引用 1 楼 linbooooo1987 的回复:
遍历json数据
能说的具体点吗?
linbooooo1987 2013-01-16
  • 打赏
  • 举报
回复
遍历json数据

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧