根据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 = "http://blog.itpub.net/13428095/viewspace-1000879/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 + " " + currentNode.getAttribute( "组名称" ) + " " ; } treediv.style.display = "block"; document.getElementById("MonitorObject").appendChild( treediv ); // 如果currentNode存在则显示组名称 var l = isChildList( fatherNo , list ) ; // 如果有子目录,则在次循环.没有则判断是否有信息 if( l.length != 0 ){ listStrblank2 += " " ; 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 + " " + "美女" + " " ; } } 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 ; }
 [@more@]
|