激我呀JS可以干的基本上我全弄过
http://shawl.qiu.googlepages.com/DomTree.htm

解决方案 »

  1.   

    <script>
    var arr=[
         [1,  "根节点",         0,   "|0|",           0],
         [265,"一级节点1",      1,   "|0|1|",         1],
         [266,"一级节点2",      1,   "|0|1|",         1],
         [267,"二级节点1-1",    265, "|0|1|265|",     1],
         [268,"三级节点1-1-1",  267, "|0|1|265|267|", 0],
         [269,"二级节点2-1",    266, "|0|1|266|",     0]
        ]
    var str="";
    function get_nodes(id,node_index){
    for(var k=0;k<node_index;k++){
    str+="\t";
    }
    var parent_path="";
    for(var i=0;i<arr.length;i++){
    if(arr[i][0]==id){
    parent_path=arr[i][3];
    str+=arr[i][1]+"\n";
    parent_path+=id+"|";
    for(var j=0;j<arr.length;j++){
    if(arr[j][3]==parent_path){
    get_nodes(arr[j][0],node_index+1);
    }
    }
    }
    }
    }
    get_nodes(1,0);
    alert(str);
    </script>
      

  2.   

    lihui_shine(浪尖赏花) 
    首先,不得不佩服一下你的天才的算法,没想到你用了寥寥几行代码就解决了一个这么复杂的问题
    但是,这种算法有个问题,如果数据超过1000行的话
    那遍历数组的次数就是
    1000*1000=1000000
    而循环超过100000次ie就拒绝运行了
    这个问题又要如何解决呢,望得到进一步的指点,不胜感激!
      

  3.   

    在很多时候,js代码的执行效率困扰着很多程序员,这也是js的一个缺陷..(遗憾啊)在解决数结构效率问题,可以采用多种方法,比如分级显示、分区域显示等等你这个可以采用分级显示的办法,我想你的1级不会有1000000个吧
    然后在每个节点上都加上一个onclick事件,点击显示其子目录
    而这些onclick事件调用的是相同的函数
    这个方法类似csdn社区左侧的数显示方法
    而且也不是很难,适合新手采用分区域显示比较难控制,需要很强的逻辑判断,不推荐
    不过其显示速度也是最快的,要是需求高的话,用这个是最合适的