数据格式:var treeData=[
   {"name":"剑侠世界",
    "columns":[
           {
    "name":"新闻中心",
"columns":[
  {
   "name":"新闻",
   "parentId":2
   },
  {
   "name":"公告",
   "parentId":2  
  }
],
"parentId":1
   },
           {
    "name":"玩家文选",
"columns":[
  {"name":"门派攻略","parentId":2},
  {"name":"玩家心情","parentId":2}
],
"parentId":1
   },
           {
    "name":"游戏资料",
"columns":[
  {"name":"游戏资料0","parentId":2},
  {"name":"游戏资料1","parentId":2}
],
"parentId":1
   }        
          ],
    "parentId":0
   },
   {"name":"剑侠世界1",
    "columns":[
           {
    "name":"新闻中心1",
"columns":[
  {"name":"新闻1"},
  {"name":"公告1"}
]
   },
           {
    "name":"玩家文选1",
"columns":[
  {"name":"门派攻略1"},
  {"name":"玩家心情1"}
]
   },
           {
    "name":"游戏资料1",
"columns":[
  {"name":"游戏资料01"},
  {"name":"游戏资料01"}
]
   }        
          ],
"parentId":0
   }   
];自己写了一个遍历算法,但是没有达到我想要得效果,把所有节点的数据都打印出来,请高手指教下,谢谢啦function creatHtml(obj,str){
var j,ob;
for(var i=0;i<obj.length;i++)
{
if(obj[i].name)
{
 str+='<ul>'+obj[i].name+'<ul>\n';
 for(j=0;j<obj[i]["columns"].length;j++)
 {
  if (obj[i].columns[j].name) {
   str += '  <li>' + obj[i]["columns"][j].name + '</li>\n';
ob=obj[i]["columns"][j];
//alert(ob);
    creatHtml(ob,str);
}
 }
}

}
return str;
}//测试
alert(creatHtml(treeData,""));

解决方案 »

  1.   

    jscookieTree已经已解决这个问题了,基本没有看懂
      

  2.   


    <div id="divmsg"></div>
    <script>
    var treeData=[ 
      {"name":"剑侠世界", 
        "columns":[ 
              { 
      "name":"新闻中心", 
    "columns":[ 
      { 
      "name":"新闻", 
      "parentId":2 
      }, 
      { 
      "name":"公告", 
      "parentId":2  
      } 
    ], 
    "parentId":1 
      }, 
              { 
      "name":"玩家文选", 
    "columns":[ 
      {"name":"门派攻略","parentId":2}, 
      {"name":"玩家心情","parentId":2} 
    ], 
    "parentId":1 
      }, 
              { 
      "name":"游戏资料", 
    "columns":[ 
      {"name":"游戏资料0","parentId":2}, 
      {"name":"游戏资料1","parentId":2} 
    ], 
    "parentId":1 
      }     
              ], 
        "parentId":0 
      }, 
      {"name":"剑侠世界1", 
        "columns":[ 
              { 
      "name":"新闻中心1", 
    "columns":[ 
      {"name":"新闻1"}, 
      {"name":"公告1"} 

      }, 
              { 
      "name":"玩家文选1", 
    "columns":[ 
      {"name":"门派攻略1"}, 
      {"name":"玩家心情1"} 

      }, 
              { 
      "name":"游戏资料1", 
    "columns":[ 
      {"name":"游戏资料01"}, 
      {"name":"游戏资料01"} 

      }     
              ], 
    "parentId":0 
      }  
    ]; function showAllNode(thejson){
    for(var e in thejson){
    var flag = false;// 当前元素是否是数组
    for(var ex in thejson[e]){
    flag = true;
    }
    if(flag){
    showAllNode(thejson[e]);
    }else if(thejson[e]){
    document.getElementById("divmsg").innerHTML += e + "=" + thejson[e] + "<br/>";
    }
    }
    }window.onload=function(){
    showAllNode(treeData);
    }
    </script>
      

  3.   

    使用sd5816690 的方法,出现too much recursion,有人知道怎么解决吗?
    我调用的是jquery 返回的JSON数组。