根据ID、父ID来排序的JS树

来源:互联网 发布:电脑怎么共享手机网络 编辑:程序博客网 时间:2024/05/08 17:09
根据ID、父ID来排序的JS树

// 得到接点
    var datas = sFileName.selectNodes("datas/data") ;
    var list = new Array() ;
    var data = new Array() ;
    for( var i = 0  ; i < datas.length ; i++  ){
        if( datas[i].getAttribute( "类型" ) == "文件夹" ){
            list.push( datas[i] ) ;
        } else {
            data.push( datas[i] ) ;
        }
    }
    // 设置初始的父号
    var fatherNo = -1 ;
    // 显示目录
    showTreeList( tree , fatherNo , datas ,list , data , null ,"") ;

    // 改变图片和隐藏显示DIV
    function expand( div , img ){
        if( div.style.display == "block" ){
            div.style.display = "none"  ;
            img.src = "images/pic/skin_NLine/closed.gif" ;
        } else {
            div.style.display = "block" ;
            img.src = "images/pic/skin_NLine/opened.gif" ;
        }
        
    }

// 递归显示树
    function showTreeList( tree , fatherNo , datas  ,list , data , currentNode , listStrblank2 ) {
        // 创建一个DIV
        var treediv  = document.createElement("div");
        var isdisplay = "1" //节点的状态   默认为显示状态
        treediv.id = "treediv" + isdisplay + fatherNo ;
        if( currentNode ){
            tree.innerHTML += listStrblank2 + "<IMG SRC='images/pic/skin_NLine/opened.gif' onclick='expand(" + treediv.id + ",this)'  />" + currentNode.getAttribute( "组名称" ) + "<br>" ;        
        }            
        treediv.style.display = "block";
        document.getElementById("MonitorObject").appendChild( treediv );
  
        // 如果currentNode存在则显示组名称
        
        var l = isChildList( fatherNo , list ) ;
        // 如果有子目录,则在次循环.没有则判断是否有信息
        if( l.length != 0 ){
            listStrblank2 += "&nbsp;&nbsp;" ;
            for( var j = 0 ; j < l.length ; j++ ){
                showTreeList( treediv , l[j].getAttribute( "id" ) , datas  ,list , data , l[j] , listStrblank2 ) ;
            }
        }
        
        var d = isChildData( fatherNo , data ) ;
        // 如果有子信息,则在次循环.没有则判断是否有信息
        if(  d.length != 0 ){
            for( var j = 0 ; j < d.length ; j++ ) {
             treediv.innerHTML += listStrblank2 + "<IMG SRC='images/pic/people.png' /><input type='checkbox' name='pName' value='" + d[j].getAttribute( "对象属性" ) + "'>" + "美女"  + "<br> " ;        
            }
        }
     tree.appendChild(treediv) ;
    }
    
    // 判断是否有子文件夹
    function isChildList( fatherNo , lists ){
        // 定义一个保存子目录的对象
        var l = new Array() ;
        // 循环找其子目录
        for( var i = 0 ; i < lists.length ; i++ ) {  
            // 如果父编号和父号相同,则保存
            if( lists[i].getAttribute( "父编号" )  == fatherNo ) {
                l.push( lists[i] ) ;
         }
        }
        return l ;
    }
    
    // 判断是否有子信息
    function isChildData( fatherNo , datas ){
        var d = new Array() ;
        for( var i = 0  ; i < datas.length ; i++ ) {    
            if( datas[i].getAttribute( "父编号" )  == fatherNo ) {
                d.push( datas[i] ) ;
                //alert(datas[i].getAttribute( "对象属性" )) ;
         }
        }
        return d ;
    }
 
原创粉丝点击