一个以&#106avascript+xml的树型列表

xml

这是在www.java2s.com网站下载的一个以Javascript+xml的树型列表,这个列表界面非常的漂亮,但是由于里面内容比较复杂,而现在项目需要用到这个列表,我到现在还没有摸清怎么在里面让点击一个树型的项目转到别的网页里面去,希望有兴趣的朋友一起研究一下。
部分代码如下: 
 <script> 
  
function dtmlXMLLoaderObject(funcObject,dhtmlObject){ 
 this.xmlDoc=""; 
 this.onloadAction=funcObject||null; 
 this.mainObject=dhtmlObject||null; 
 return this; 
}; 
  
 dtmlXMLLoaderObject.prototype.waitLoadFunction=function(dhtmlObject){ 
 this.check=function(){ 
 if(!dhtmlObject.xmlDoc.readyState)dhtmlObject.onloadAction(dhtmlObject.mainObject); 
 else{ 
 if(dhtmlObject.xmlDoc.readyState != 4)return false; 
 else dhtmlObject.onloadAction(dhtmlObject.mainObject);} 
}; 
 return this.check; 
}; 
  
  
 dtmlXMLLoaderObject.prototype.getXMLTopNode=function(tagName){ 
 if(this.xmlDoc.responseXML){var temp=this.xmlDoc.responseXML.getElementsByTagName(tagName);
var z=temp[0];} 
 else var z=this.xmlDoc.documentElement; 
 if(z)return z; 
 alert("Incorrect XML"); 
 return document.createElement("DIV"); 
}; 
  
  
 dtmlXMLLoaderObject.prototype.loadXMLString=function(xmlString){ 
 try  

 var parser = new DOMParser(); 
 this.xmlDoc = parser.parseFromString(xmlString,"text/xml"); 

 catch(e){ 
 this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
 this.xmlDoc.loadXML(xmlString); 

 this.onloadAction(this.mainObject); 

 dtmlXMLLoaderObject.prototype.loadXML=function(filePath){ 
 try  

 this.xmlDoc = new XMLHttpRequest(); 
 this.xmlDoc.open("GET",filePath,true); 
 this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this); 
 this.xmlDoc.send(null); 

 catch(e){ 
 if(document.implementation && document.implementation.createDocument) 

 this.xmlDoc = document.implementation.createDocument("","",null); 
 this.xmlDoc.onload = new this.waitLoadFunction(this); 

 else 

 this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
 this.xmlDoc.async="true"; 
 this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this); 

 this.xmlDoc.load(filePath); 

}; 
  
  
function callerFunction(funcObject,dhtmlObject){ 
 this.handler=function(e){ 
 if(!e)e=event; 
 funcObject(e,dhtmlObject); 
 return true; 
}; 
 return this.handler; 
}; 

function getAbsoluteLeft(htmlObject){ 
 var xPos = htmlObject.offsetLeft; 
 var temp = htmlObject.offsetParent; 

 while(temp != null){ 
 xPos+= temp.offsetLeft; 
 temp = temp.offsetParent; 

 return xPos; 

  
function getAbsoluteTop(htmlObject){ 
 var yPos = htmlObject.offsetTop; 
 var temp = htmlObject.offsetParent; 
 while(temp != null){ 
 yPos+= temp.offsetTop; 
 temp = temp.offsetParent; 

 return yPos; 

  
  
  
function convertStringToBoolean(inputString){if(typeof(inputString)=="string")inputString=
inputString.toLowerCase(); 
 switch(inputString){ 
 case "1": 
 case "true": 
 case "yes": 
 case "y": 
 case 1:  
 case true:  
 return true; 
 break; 
 default: return false; 

function getUrlSymbol(str){ 
 if(str.indexOf("?")!=-1) 
 return "&" 
 else 
 return "?" 

  
  
function dhtmlDragAndDropObject(){ 
 this.lastLanding=0; 
 this.dragNode=0; 
 this.dragStartNode=0; 
 this.dragStartObject=0; 
 this.tempDOMU=null; 
 this.tempDOMM=null; 
 this.waitDrag=0; 
 if(window.dhtmlDragAndDrop)return window.dhtmlDragAndDrop; 
 window.dhtmlDragAndDrop=this; 
 return this; 
}; 
  
 dhtmlDragAndDropObject.prototype.removeDraggableItem=function(htmlNode){ 
 htmlNode.onmousedown=null; 
 htmlNode.dragStarter=null; 
 htmlNode.dragLanding=null; 

 dhtmlDragAndDropObject.prototype.addDraggableItem=function(htmlNode,dhtmlObject){ 
 htmlNode.onmousedown=this.preCreateDragCopy; 
 htmlNode.dragStarter=dhtmlObject; 
 this.addDragLanding(htmlNode,dhtmlObject); 

 dhtmlDragAndDropObject.prototype.addDragLanding=function(htmlNode,dhtmlObject){ 
 htmlNode.dragLanding=dhtmlObject; 

 dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(e) 

 if(window.dhtmlDragAndDrop.waitDrag){ 
 window.dhtmlDragAndDrop.waitDrag=0; 
 document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU; 
 document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM; 
 return; 

  
 window.dhtmlDragAndDrop.waitDrag=1; 
 window.dhtmlDragAndDrop.tempDOMU=document.body.onmouseup; 
 window.dhtmlDragAndDrop.tempDOMM=document.body.onmousemove; 
 window.dhtmlDragAndDrop.dragStartNode=this; 
 window.dhtmlDragAndDrop.dragStartObject=this.dragStarter; 
 document.body.onmouseup=window.dhtmlDragAndDrop.preCreateDragCopy; 

 document.body.onmousemove=window.dhtmlDragAndDrop.callDrag; 
}; 
 dhtmlDragAndDropObject.prototype.callDrag=function(e){ 
 if(!e)e=window.event; 
 dragger=window.dhtmlDragAndDrop; 
 if(!dragger.dragNode){ 
 dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode); 
 document.body.appendChild(dragger.dragNode); 
 document.body.onmouseup=dragger.stopDrag; 
 dragger.waitDrag=0; 

 dragger.dragNode.style.left=e.clientX+15+document.body.scrollLeft;dragger.dragNode.style.top=
e.clientY+3+document.body.scrollTop; 
 if(!e.srcElement)var z=e.target;else z=e.srcElement; 
 dragger.checkLanding(z); 

 dhtmlDragAndDropObject.prototype.checkLanding=function(htmlObject){ 
 if(htmlObject.dragLanding){if(this.lastLanding)this.lastLanding.dragLanding._dragOut(this.lastLanding); 
 this.lastLanding=htmlObject;this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding,this.dragStartNode);} 
 else{ 
 if(htmlObject.tagName!="BODY")this.checkLanding(htmlObject.parentNode); 
 else{if(this.lastLanding)this.lastLanding.dragLanding._dragOut(this.lastLanding);this.lastLanding=0;} 


 dhtmlDragAndDropObject.prototype.stopDrag=function(e){ 
 dragger=window.dhtmlDragAndDrop; 
 if(dragger.lastLanding)dragger.lastLanding.dragLanding._drag(dragger.dragStartNode,dragger.dragStartObject,dragger.lastLanding); 
 dragger.lastLanding=0; 
 dragger.dragNode.parentNode.removeChild(dragger.dragNode); 
 dragger.dragNode=0; 
 dragger.dragStartNode=0; 
 dragger.dragStartObject=0; 
 document.body.onmouseup=dragger.tempDOMU; 
 document.body.onmousemove=dragger.tempDOMM; 
 dragger.tempDOMU=null; 
 dragger.tempDOMM=null; 
 dragger.waitDrag=0; 

  
 </script> 
 <!-- dhtmlXTree.js --> 
 <script> 
  

function dhtmlXTreeObject(htmlObject,width,height,rootId){ 
 if(typeof(htmlObject)!="object") 
 this.parentObject=document.getElementById(htmlObject); 
 else 
 this.parentObject=htmlObject; 
 this.mytype="tree"; 
 this.width=width; 
 this.height=height; 
 this.rootId=rootId; 
  
 this.style_pointer="pointer"; 
 if(navigator.appName == ’Microsoft Internet Explorer’)this.style_pointer="hand"; 
  
 this.hfMode=0; 
 this.nodeCut=0; 
 this.XMLsource=0; 
 this.XMLloadingWarning=0; 
 this._globalIdStorage=new Array(); 
 this.globalNodeStorage=new Array(); 
 this._globalIdStorageSize=0; 
 this.treeLinesOn=true; 

 this.checkFuncHandler=0; 
 this.openFuncHandler=0; 
 this.dblclickFuncHandler=0; 
 this.tscheck=false; 
 this.timgen=true; 
  
 this.imPath="treeGfx/"; 
 this.checkArray=new Array("iconUnCheckAll.gif","iconCheckAll.gif","iconCheckGray.gif"); 
 this.lineArray=new Array("line2.gif","line3.gif","line4.gif","blank.gif","blank.gif"); 
 this.minusArray=new Array("minus2.gif","minus3.gif","minus4.gif","minus.gif","minus5.gif"); 
 this.plusArray=new Array("plus2.gif","plus3.gif","plus4.gif","plus.gif","plus5.gif"); 
 this.imageArray=new Array("leaf.gif","folderOpen.gif","folderClosed.gif"); 
 this.cutImg= new Array(0,0,0); 
 this.cutImage="but_cut.gif"; 
  
 this.dragger= new dhtmlDragAndDropObject(); 
 this.htmlNode=new dhtmlXTreeItemObject(this.rootId,"",0,this); 
 this.htmlNode.htmlNode.childNodes[0].childNodes[0].style.display="none"; 
 this.htmlNode.htmlNode.childNodes[0].childNodes[0].childNodes[0].className="hiddenRow"; 
 this.allTree=this._createSelf(); 
 this.allTree.appendChild(this.htmlNode.htmlNode); 
 this.allTree.onselectstart=new Function("return false;"); 
 this.XMLLoader=new dtmlXMLLoaderObject(this._parseXMLTree,this); 
  
 this.dragger.addDragLanding(this.allTree,this); 
 return this; 
}; 

function dhtmlXTreeItemObject(itemId,itemText,parentObject,treeObject,actionHandler,mode){ 
 this.htmlNode=""; 
 this.acolor=""; 
 this.scolor=""; 
 this.tr=0; 
 this.childsCount=0; 
 this.tempDOMM=0; 
 this.tempDOMU=0; 
 this.dragSpan=0; 
 this.dragMove=0; 
 this.span=0; 
 this.closeble=1; 
 this.childNodes=new Array(); 
 this.checkstate=0; 
 this.treeNod=treeObject; 
 this.label=itemText; 
 this.parentObject=parentObject; 
 this.actionHandler=actionHandler; 
 this.images=new Array(treeObject.imageArray[0],treeObject.imageArray[1],treeObject.imageArray[2]); 

 this.id=treeObject._globalIdStorageAdd(itemId,this); 
 if(this.treeNod.checkBoxOff)this.htmlNode=this.treeNod._createItem(1,this,mode); 
 else this.htmlNode=this.treeNod._createItem(0,this,mode); 
 this.htmlNode.objBelong=this; 
 return this; 
}; 
  
  
  
 dhtmlXTreeObject.prototype._globalIdStorageAdd=function(itemId,itemObject){ 
 if(this._globalIdStorageFind(itemId)){d=new Date();itemId=d.valueOf()+"_"+itemId;return this._globalI
dStorageAdd(itemId,itemObject);} 
 this._globalIdStorage[this._globalIdStorageSize]=itemId; 
 this.globalNodeStorage[this._globalIdStorageSize]=itemObject; 

 this._globalIdStorageSize++; 
 return itemId; 
}; 
  
 dhtmlXTreeObject.prototype._globalIdStorageSub=function(itemId){ 
 for(var i=0;i<this._globalIdStorageSize;i++) 
 if(this._globalIdStorage[i]==itemId) 

 this._globalIdStorage[i]=this._globalIdStorage[this._globalIdStorageSize-1]; 
 this.globalNodeStorage[i]=this.globalNodeStorage[this._globalIdStorageSize-1]; 
 this._globalIdStorageSize--; 
 this._globalIdStorage[this._globalIdStorageSize]=0; 
 this.globalNodeStorage[this._globalIdStorageSize]=0; 

}; 
  
  
 dhtmlXTreeObject.prototype._globalIdStorageFind=function(itemId){ 
 for(var i=0;i<this._globalIdStorageSize;i++) 
 if(this._globalIdStorage[i]==itemId) 
 return this.globalNodeStorage[i]; 
 return 0; 
}; 

  
  
 dhtmlXTreeObject.prototype._drawNewTr=function(htmlObject) 

 var tr =document.createElement(’tr’); 
 var td1=document.createElement(’td’); 
 var td2=document.createElement(’td’); 
 td1.appendChild(document.createTextNode("")); 
 td2.colSpan=3;td2.appendChild(htmlObject);tr.appendChild(td1);tr.appendChild(td2); 
 return tr; 
}; 
  
 dhtmlXTreeObject.prototype.loadXMLString=function(xmlString){this.XMLLoader.loadXMLString(xmlString);}; 
  
 dhtmlXTreeObject.prototype.loadXML=function(file){this.XMLLoader.loadXML(file);}; 
  
 dhtmlXTreeObject.prototype._attachChildNode=function(parentObject,itemId,itemText,itemActionHandler,image1,image2,image3,optionStr,childs,url,beforeNode){ 
 if(beforeNode)parentObject=beforeNode.parentObject; 
 if(((parentObject.XMLload==0)&&(this.XMLsource))&&(!this.XMLloadingWarning)) 

 parentObject.XMLload=1;this.loadXML(this.XMLsource+getUrlSymbol(this.XMLsource)+"itemId="+escape(parentObject.itemId)); 

  
 var Count=parentObject.childsCount; 
 var Nodes=parentObject.childNodes; 
  
 if((!itemActionHandler)&&(this.aFunc))itemActionHandler=this.aFunc; 
 Nodes[Count]=new dhtmlXTreeItemObject(itemId,itemText,parentObject,this,itemActionHandler,1); 
  
 if(image1)Nodes[Count].images[0]=image1; 
 if(image2)Nodes[Count].images[1]=image2; 
 if(image3)Nodes[Count].images[2]=image3; 
  
 parentObject.childsCount++; 
 var tr=this._drawNewTr(Nodes[Count].htmlNode); 
 if(this.XMLloadingWarning) 
 Nodes[Count].htmlNode.parentNode.parentNode.style.display="none"; 
  
 if(optionStr){ 
 var tempStr=optionStr.split(","); 
 for(var i=0;i<tempStr.length;i++) 


 switch(tempStr[i]) 

 case "TOP": if(parentObject.childsCount>1)beforeNode=parentObject.htmlNode.childNodes[0].childNodes[1].nodem.previousSibling;break; 

}; 
}; 
  
 if((beforeNode)&&(beforeNode.tr.nextSibling)) 
 parentObject.htmlNode.childNodes[0].insertBefore(tr,beforeNode.tr.nextSibling); 
 else 
 parentObject.htmlNode.childNodes[0].appendChild(tr); 
 if(this.XMLsource)if((childs)&&(childs!=0))Nodes[Count].XMLload=0;else Nodes[Count].XMLload=1; 
 Nodes[Count].tr=tr; 
 tr.nodem=Nodes[Count]; 
 if(parentObject.itemId==0) 
 tr.childNodes[0].className="hitemIddenRow"; 
  
 if(optionStr){ 
 var tempStr=optionStr.split(","); 
 for(var i=0;i<tempStr.length;i++) 

 switch(tempStr[i]) 

 case "SELECT": this.selectItem(itemId,false);break; 
 case "CALL": this.selectItem(itemId,true);break; 
 case "CHILD": Nodes[Count].XMLload=0;break; 
 case "CHECKED":  
 if(this.XMLloadingWarning) 
 this.setCheckList+=itemId; 
 else 
 this.setCheck(itemId,1); 
 break; 
 case "OPEN": Nodes[Count].openMe=1;break; 

}; 
}; 
 if(!this.XMLloadingWarning) 

 if(this._getOpenState(parentObject)<0) 
 this.openItem(parentObject.id); 
  
 if(beforeNode) 

 this._correctPlus(beforeNode); 
 this._correctLine(beforeNode); 

 this._correctPlus(parentObject); 
 this._correctLine(parentObject); 
 this._correctPlus(Nodes[Count]); 
 if(parentObject.childsCount>=2) 

 this._correctPlus(Nodes[parentObject.childsCount-2]); 
 this._correctLine(Nodes[parentObject.childsCount-2]); 

 if(parentObject.childsCount!=2)this._correctPlus(Nodes[0]); 
 if(this.tscheck)this._correctCheckStates(parentObject); 

  
 return Nodes[Count]; 
}; 

 dhtmlXTreeObject.prototype.insertNewItem=function(parentId,itemId,itemText,itemActionHandler,image1,image2,image3,optionStr,childs,url){ 
 var parentObject=this._globalIdStorageFind(parentId); 
 if(!parentObject)return(-1); 
 return this._attachChildNode(parentObject,itemId,itemText,itemActionHandler,image1,image2,image3,optionStr,childs,url); 
}; 
  
 dhtmlXTreeObject.prototype._parseXMLTree=function(dhtmlObject,node,parentId,level){ 
 dhtmlObject.XMLloadingWarning=1; 
 var nodeAskingCall=""; 
 if(!node){ 
 node=dhtmlObject.XMLLoader.getXMLTopNode("tree"); 
 parentId=node.getAttribute("id"); 

 dhtmlObject.setCheckList=""; 

 for(var i=0;i<node.childNodes.length;i++) 

 if((node.childNodes[i].nodeType==1)&&(node.childNodes[i].tagName == "item")) 

 var name=node.childNodes[i].getAttribute("text"); 
 var cId=node.childNodes[i].getAttribute("id"); 
  
 var im0=node.childNodes[i].getAttribute("im0"); 
 var im1=node.childNodes[i].getAttribute("im1"); 
 var im2=node.childNodes[i].getAttribute("im2"); 
  
 var aColor=node.childNodes[i].getAttribute("aCol"); 
 var sColor=node.childNodes[i].getAttribute("sCol"); 
  
 var chd=node.childNodes[i].getAttribute("child"); 
  
 var atop=node.childNodes[i].getAttribute("top"); 
 var aopen=node.childNodes[i].getAttribute("open"); 
 var aselect=node.childNodes[i].getAttribute("select"); 
 var acall=node.childNodes[i].getAttribute("call"); 
 var achecked=node.childNodes[i].getAttribute("checked"); 
 var closeable=node.childNodes[i].getAttribute("closeable"); 
 var url=node.childNodes[i].getAttribute("url"); 
 var zST=""; 
 if(aselect)zST+=",SELECT"; 
 if(atop)zST+=",TOP"; 
 if(acall)nodeAskingCall=cId; 
 if(achecked)zST+=",CHECKED"; 
 if((aopen)&&(aopen!="0"))zST+=",OPEN"; 
  
 var temp=dhtmlObject._globalIdStorageFind(parentId); 
 temp.XMLload=1; 
 dhtmlObject.insertNewItem(parentId,cId,name,0,im0,im1,im2,zST,chd,url); 
 if(dhtmlObject.parserExtension)dhtmlObject.parserExtension._parseExtension(node.childNodes[i],dhtmlObject.parserExtension,cId,parentId); 
 dhtmlObject.setItemColor(cId,aColor,sColor); 
 if((closeable=="0")||(closeable=="1"))dhtmlObject.setItemCloseable(cId,closeable); 
 var zcall=dhtmlObject._parseXMLTree(dhtmlObject,node.childNodes[i],cId,1); 
 if(zcall!="")nodeAskingCall=zcall; 

 else 
 if((node.childNodes[i].nodeType==1)&&(node.childNodes[i].tagName == "userdata")) 

 var name=node.childNodes[i].getAttribute("name"); 
 if((name)&&(node.childNodes[i].childNodes[0])){ 
 dhtmlObject.setUserData(parentId,name,node.childNodes[i].childNodes[0].data); 
}; 
}; 
}; 
 if(!level){ 
 dhtmlObject.lastLoadedXMLId=parentId; 
 dhtmlObject._redrawFrom(dhtmlObject); 
 dhtmlObject.XMLloadingWarning=0; 
 var chArr=dhtmlObject.setCheckList.split(","); 
 for(var n=0;n<chArr.length;n++) 
 if(chArr[n])dhtmlObject.setCheck(chArr[n],1); 
 if(nodeAskingCall!="")dhtmlObject.selectItem(nodeAskingCall,true); 


 return nodeAskingCall; 
}; 
  
  
 dhtmlXTreeObject.prototype._redrawFrom=function(dhtmlObject,itemObject){ 
 if(!itemObject){ 
 var tempx=dhtmlObject._globalIdStorageFind(dhtmlObject.lastLoadedXMLId); 
 dhtmlObject.lastLoadedXMLId=-1; 
 if(!tempx)return 0; 

 else tempx=itemObject; 
 for(var i=0;i<tempx.childsCount;i++) 

 if(!itemObject)tempx.childNodes[i].htmlNode.parentNode.parentNode.style.display=""; 
 if(tempx.childNodes[i].openMe==1) 
 for(var zy=0;zy<tempx.childNodes[i].childNodes.length;zy++) 
 tempx.childNodes[i].htmlNode.childNodes[0].childNodes[zy+1].style.display=""; 
 dhtmlObject._redrawFrom(dhtmlObject,tempx.childNodes[i]); 
 dhtmlObject._correctLine(tempx.childNodes[i]); 
 dhtmlObject._correctPlus(tempx.childNodes[i]); 
}; 
 dhtmlObject._correctLine(tempx); 
 dhtmlObject._correctPlus(tempx); 
}; 

 dhtmlXTreeObject.prototype._createSelf=function(){ 
 var div=document.createElement(’div’); 
 div.className="containerTableStyle"; 
 div.style.width=this.width; 
 div.style.height=this.height; 
 this.parentObject.appendChild(div); 
 return div; 
}; 

 dhtmlXTreeObject.prototype._xcloseAll=function(itemObject) 

 if(this.rootId!=itemObject.id)this._HideShow(itemObject,1); 
 for(var i=0;i<itemObject.childsCount;i++) 
 this._xcloseAll(itemObject.childNodes[i]); 
}; 
  
 dhtmlXTreeObject.prototype._xopenAll=function(itemObject) 

 this._HideShow(itemObject,2); 
 for(var i=0;i<itemObject.childsCount;i++) 
 this._xopenAll(itemObject.childNodes[i]); 
}; 
  
 dhtmlXTreeObject.prototype._correctPlus=function(itemObject){ 
 var workArray=this.lineArray; 
 if((this.XMLsource)&&(!itemObject.XMLload)) 

 var workArray=this.plusArray; 
 itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src=this.imPath+itemO
bject.images[2]; 

 else 
try{ 
 if(itemObject.childsCount) 

 if(itemObject.htmlNode.childNodes[0].childNodes[1].style.display!="none") 

 var workArray=this.minusArray; 
 itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src=this.imPath+itemO
bject.images[1]; 

 else 

 var workArray=this.plusArray; 
 itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src=this.imPath+itemO
bject.images[2]; 


 else 

 itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src=this.imPath+itemO

bject.images[0]; 


 catch(e){}; 
  
 var tempNum=2; 
 if(!itemObject.treeNod.treeLinesOn)itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[0].
childNodes[0].src=this.imPath+workArray[3]; 
 else{ 
 if(itemObject.parentObject)tempNum=this._getCountStatus(itemObject.id,itemObject.parentObject); 
 itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[0].childNodes[0].src=this.imPath+workArray[tempNum]; 

}; 
  
 dhtmlXTreeObject.prototype._correctLine=function(itemObject){ 
 var sNode=itemObject.parentObject; 
 try{ 
 if(sNode) 
 if((this._getLineStatus(itemObject.id,sNode)==0)||(!this.treeLinesOn)) 

 for(var i=1;i<=itemObject.childsCount;i++) 

 itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundImage=""; 
 itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundRepeat=""; 


 else 
 for(var i=1;i<=itemObject.childsCount;i++) 

 itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundImage="url("+this.imPath+"line1.gif)"; 
 itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundRepeat="repeat-y"; 


 catch(e){}; 
}; 
  
 dhtmlXTreeObject.prototype._getCountStatus=function(itemId,itemObject){ 
 try{ 
 if(itemObject.childsCount<=1){if(itemObject.id==this.rootId)return 4;else return 0;} 
  
 if(itemObject.htmlNode.childNodes[0].childNodes[1].nodem.id==itemId)if(!itemObject.id)return 2;else return 1; 
 if(itemObject.htmlNode.childNodes[0].childNodes[itemObject.childsCount].nodem.id==itemId)return 0; 

 catch(e){}; 
 return 1; 
}; 
  
 dhtmlXTreeObject.prototype._getLineStatus =function(itemId,itemObject){ 
 if(itemObject.htmlNode.childNodes[0].childNodes[itemObject.childsCount].nodem.id==itemId)return 0; 
 return 1; 

 dhtmlXTreeObject.prototype._HideShow=function(itemObject,mode){ 
 if(((this.XMLsource)&&(!itemObject.XMLload))&&(!mode)){itemObject.XMLload=1;this.loadXML(this.XMLsource+getUrlSymbol(this.XMLsource)+"id="+escape(itemObject.id));return;}; 
 var Nodes=itemObject.htmlNode.childNodes[0].childNodes;var Count=Nodes.length; 
 if(Count>1){ 
 if(((Nodes[1].style.display!="none")||(mode==1))&&(mode!=2))nodestyle="none";else nodestyle=""; 
 for(var i=1;i<Count;i++) 
 Nodes[i].style.display=nodestyle; 

 this._correctPlus(itemObject); 

  
 dhtmlXTreeObject.prototype._getOpenState=function(itemObject){ 

 var z=itemObject.htmlNode.childNodes[0].childNodes; 
 if(z.length<=1)return 0; 
 if(z[1].style.display!="none")return 1; 
 else return -1; 

  
  
 dhtmlXTreeObject.prototype.onRowClick2=function(){ 
 if(this.parentObject.treeNod.dblclickFuncHandler)if(!this.parentObject.treeNod.dblclickFuncHandler(this.parentObject.id))return 0; 
 if((this.parentObject.closeble)&&(this.parentObject.closeble!="0")) 
 this.parentObject.treeNod._HideShow(this.parentObject); 
 else 
 this.parentObject.treeNod._HideShow(this.parentObject,2); 
}; 
  
 dhtmlXTreeObject.prototype.onRowClick=function(){ 
 if(this.parentObject.treeNod.openFuncHandler)if(!this.parentObject.treeNod.openFuncHandler(this.parentObject.id,this.parentObject.treeNod._getOpenState(this.parentObject)))return 0; 
 if((this.parentObject.closeble)&&(this.parentObject.closeble!="0")) 
 this.parentObject.treeNod._HideShow(this.parentObject); 
 else 
 this.parentObject.treeNod._HideShow(this.parentObject,2); 
}; 
  
  
 dhtmlXTreeObject.prototype.onRowSelect=function(e,htmlObject,mode){ 
 if(!htmlObject)htmlObject=this; 
 htmlObject.childNodes[0].className="selectedTreeRow"; 
 if(htmlObject.parentObject.scolor)htmlObject.parentObject.span.style.color=htmlObject.parentObject.scolor; 
 if((htmlObject.parentObject.treeNod.lastSelected)&&(htmlObject.parentObject.treeNod.lastSelected!=
htmlObject)) 

 htmlObject.parentObject.treeNod.lastSelected.childNodes[0].className="standartTreeRow"; 
 if(htmlObject.parentObject.treeNod.lastSelected.parentObject.acolor)htmlObject.parentObject.treeNod.lastSelected.parentObject.span.style.color=htmlObject.parentObject.treeNod.
lastSelected.parentObject.acolor; 

 htmlObject.parentObject.treeNod.lastSelected=htmlObject; 
 if(!mode){if(htmlObject.parentObject.actionHandler)htmlObject.parentObject.actionHandler(htmlObject.parentObject.id);} 
}; 
  

  
dhtmlXTreeObject.prototype._correctCheckStates=function(dhtmlObject){ 
 if(!this.tscheck)return; 
 if(dhtmlObject.id==this.rootId)return; 
 var act=dhtmlObject.htmlNode.childNodes[0].childNodes; 
 var flag1=0;var flag2=0; 
 if(act.length<2)return; 
 for(var i=1;i<act.length;i++) 
 if(act[i].nodem.checkstate==0)flag1=1; 
 else if(act[i].nodem.checkstate==1)flag2=1; 
 else{flag1=1;flag2=1;break;} 
 if((flag1)&&(flag2))this._setCheck(dhtmlObject,"notsure"); 
 else if(flag1)this._setCheck(dhtmlObject,false); 
 else this._setCheck(dhtmlObject,true); 
  

 this._correctCheckStates(dhtmlObject.parentObject); 

  
  
 dhtmlXTreeObject.prototype.onCheckBoxClick=function(e){ 
 if(this.treeNod.tscheck) 
 if(this.parentObject.checkstate==1)this.treeNod._setSubChecked(false,this.parentObject); 
 else this.treeNod._setSubChecked(true,this.parentObject); 
 else 
 if(this.parentObject.checkstate==1)this.treeNod._setCheck(this.parentObject,false); 
 else this.treeNod._setCheck(this.parentObject,true); 
 this.treeNod._correctCheckStates(this.parentObject.parentObject); 
 if(this.treeNod.checkFuncHandler)return(this.treeNod.checkFuncHandler(this.parentObject.id,this.parentObject.checkstate)); 
 else return true; 
}; 
  
 dhtmlXTreeObject.prototype._createItem=function(acheck,itemObject,mode){ 
 var table=document.createElement(’table’); 
 table.cellSpacing=0;table.cellPadding=0; 
 table.border=0; 
 if(this.hfMode)table.style.tableLayout="fixed"; 
 table.style.margin=0;table.style.padding=0; 
  
 var tbody=document.createElement(’tbody’); 
 var tr=document.createElement(’tr’); 
 var td1=document.createElement(’td’); 
 td1.className="standartTreeImage"; 
 var img0=document.createElement("img"); 
 img0.border="0";td1.appendChild(img0);img0.style.padding=0; 
  
 var td11=document.createElement(’td’); 
 var inp=document.createElement("img");inp.checked=0;inp.src=this.imPath+this.checkArray[0];inp.style.width="16px";inp.style.height="16px"; 
 if(!acheck)inp.style.display="none"; 
 td11.appendChild(inp); 
 td11.width="16px"; 
 inp.onclick=this.onCheckBoxClick; 
 inp.treeNod=this; 
 inp.parentObject=itemObject; 
 var td12=document.createElement(’td’); 
 td12.className="standartTreeImage"; 
 var img=document.createElement("img");img.onmousedown=this._preventNsDrag; 
 img.border="0"; 
 if(!mode)img.src=this.imPath+this.imageArray[0]; 
 td12.appendChild(img);img.style.padding=0;img.style.margin=0; 
 if(this.timgen) 
{img.style.width="18px";img.style.height="18px";} 
 else 
{img.style.width="0px";img.style.height="0px";} 
</script>

时间: 2024-11-03 20:58:01

一个以&#106avascript+xml的树型列表的相关文章

一个以Javascript+xml的树型列表

javascript|xml      这是在www.java2s.com网站下载的一个以Javascript+xml的树型列表,这个列表界面非常的漂亮,但是由于里面内容比较复杂,而现在项目需要用到这个列表,我到现在还没有摸清怎么在里面让点击一个树型的项目转到别的网页里面去,希望有兴趣的朋友一起研究一下.部分代码如下:  <script>   function dtmlXMLLoaderObject(funcObject,dhtmlObject){  this.xmlDoc="&qu

ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单

前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: var tg = new AR.DataGrid('Demo_Area', null, "grid", true); tg.options = { idField: "code", treeField: "name", parentField: &qu

一个全PHP编写的树型目录结构

树型目录看起来新颖别致,而网上的大多是JAVASCRIPT和PHP的结合,本人这一个是用全用PHP4写的,用了SESSION功能,请大家看了多提意见.(本人在WIN98/PWS/PHP4下测试通过) <? // 2001/02/23 //ZHANGHEXUN //树型目录 session_start(); //开始一个SESSION if (!session_is_registered("$office_action")){ $office_action=0; session_r

VC程序中树型控件节点拖动的完美实现

Visual C++中提供的MFC类CtreeCtrl(树型控件)用来显示具有一定层次结构的数据项时 方便.直观,所以它已经被广泛地应用在各种软件中,如资源管理器中的磁盘目录就用的是 树型控件,我们在编程中也会经常用到这个控件,但是这个控件也有缺陷,那就是它并不直 接支持拖动节点等高级特性,这使得程序员在编程时使用它受到了很大限制,同时又给软件 用户带来了一些不便.为此,本实例通过从 CTreeCtrl 中派生了一个类 CXTreeCtrl ,实现 树型控件中节点的拖动.这个类具有如下的功能:⑴

整理一个树型问题的解决方法

解决|问题 我的问题: 1.一个销售系统,设有各级代理商,每个代理商的表是这样设计的 数据库结构表1: 代理商资料表[id] 自动编号 编号[lishu] 长整型 隶属字段[xiaoshoue] 长整型 销售额[ticheng] 长整型 提成[add_date] 日期/时间 代理商添加时间 要求1.让代理商分级,指出某个代理商可以算出他的上级代理商和下级代理商. 2.提成的比例按照销售额的多少来定,销售额2000以下的提成比例是20%,销售额在2000到6000之间的提成比例是25%,销售额在6

一个基于jQuery的树型插件(OrangeTree)使用介绍_jquery

OrangeTree 下载地址:OrangeTree 首先大家先看下演示吧! 首先声明本人美术功底比较差!这个样式大家就将就一下吧!我将这个无限级树型插件命名为桔子树,它主要就分为3个级别的节点: 首级菜单,就是树上的一级菜单 父级菜单,也就是下面还有节点的菜单 子级菜单,也就是下面没有节点的菜单 每个节点都可以用CSS控制其样式,详细请看下表: OrangeTree .OrangeTree 控件 .first_node 首级菜单的默认样式 .first_node_hover 首级菜单鼠标移上的

dtree和jquery构建树型结构

对于小型的树型应用来说,dtree是一个不错的选择. 先看一眼dtree给的例子 构造静态树 首先引入css文件和js文件 <link rel="StyleSheet" href="dtree.css" type="text/css" /> <script type="text/javascript" src="dtree.js"></script> 构造静态树其实很简单

AJAX实现动态树型结构

ajax|动态|树型结构 树型结构是一类应用非常广泛的数据结构.人类社会中宗族的族谱和现代企业的组织形式都是树型结构.在计算机领域中,文件系统中文件的管理结构.存储器管理中的页表.数据库中的索引等也都是树型结构.随着Internet的飞速发展,树型结构在浏览器/服务器(Browser/Server,简称B/S)应用系统的应用也越来越广泛. 目前,在互联网上广泛存在.应用的树型结构一般分为两种:静态和动态结构.静态结构存在最多.实现简单,但是静态导致不能改变树的结构和内容,无法反映树的节点信息的变

基于AJAX的动态树型结构的设计与实现

ajax|动态|设计|树型结构 <B>摘 要</B>:简要介绍了一种通用的,动态树型结构的实现方案,该方案基于Asynchronous JavaScript and XML,结合Struts框架设计实现了结构清晰.扩展性良好的多层架构,数据存储于数据库,结合XML描述树的节点信息,使得任何按预定的XML文档描述的信息都可以通过动态树来展现.<br /><table border="0" cellspacing="0" cel