⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tree.js

📁 客户
💻 JS
字号:
var oTreeXml,oTreeXsl;
var oCurrentA;
oTreeXml = new ActiveXObject("Microsoft.XMLDOM");
oTreeXsl = new ActiveXObject("Microsoft.XMLDOM");
oSubXsl  = new ActiveXObject("Microsoft.XMLDOM");
oTreeXml.async = false;
oTreeXsl.async = false;
oSubXsl.async = false;
rImg1 = new RegExp("-:","ig");
rImg2 = new RegExp("_:","ig");
r1	= new RegExp("1\.gif","ig");
r2	= new RegExp("2\.gif","ig");

function init(tree)
{
	oTreeXml.load( tree );
	oTreeXsl.load( "/common/ztree.xml" );
	oSubXsl.load("/common/ztree2.xsl");;
	strHTML = oTreeXml.transformNode( oTreeXsl );
	document.all["divTree"].innerHTML = strHTML;
        //openTree在页面生成所有的节点
        //openTree();
}

function doClick()
{
	var oSrc = event.srcElement;
  if ( "INPUT" == oSrc.tagName)
  {
    toggleTree(oSrc.id,oSrc.openMode);
    return;
  }
	if ( "undefined" == typeof(oSrc.fold) )
		return false;
	if ( oSrc != oCurrentA )
	{
		if ( "A" == oSrc.tagName && "_blank" != oSrc.target )
		{
			if ( "undefined" != typeof(oCurrentA) )
			{
				oCurrentA.className = "link1";
			}
			oSrc.className 	= "link12";
			oCurrentA 		= oSrc;
		}
    }

	if ( document.all(oSrc.fold) )
	{
		oParent = oSrc.parentElement;
		strName = oParent.children( oParent.children.length-1 ).fold;
		oDiv = document.all(oSrc.fold);
		if ( "no" == oDiv.load )
    	{
			oNode = oTreeXml.documentElement.selectSingleNode( "//node[@id = '" + strName + "']" );
			//alert(strName);
			strHTML = oNode.transformNode( oSubXsl );
			strHTML = strHTML.replace(rImg1,"<img src=/images/tree/img-vert-line.gif height=16 align=texttop>");
			strHTML = strHTML.replace(rImg2,"<img src=/images/tree/img-blank.gif height=16 align=texttop>");
			
			oDiv.innerHTML = strHTML;
			
			oDiv.load = "yes";
			
		}

		strFlag	= oDiv.style.display;
		nImgNum = oParent.all.tags("IMG").length;
		oImg	= oParent.all.tags("IMG");
		if ( "none" == strFlag )
		{
			oDiv.style.display = "block";
			//oImg[ nImgNum-1 ].src = oImg[ nImgNum-1 ].src.replace(r1,"2\.gif");
			oImg[ nImgNum-2 ].src = oImg[ nImgNum-2 ].src.replace(r1,"2\.gif");	
		}
		else
		{
			oDiv.style.display = "none";
			//oImg[ nImgNum-1 ].src = oImg[ nImgNum-1 ].src.replace(r2,"1\.gif");
			oImg[ nImgNum-2 ].src = oImg[ nImgNum-2 ].src.replace(r2,"1\.gif");
		}
	}
	else
	{
		if ( "_blank" == oSrc.target )
		{
			nScreenWidth = window.screen.availWidth;
			nScreenHeight = window.screen.availHeight;
			url = oSrc.href;
			oWin1 = window.open( "testframe.jsp?url="+url,"_blank","location=no,resizable=1,menubar=no,toolbar=yes,status=yes,top=0,left=0,width="+(nScreenWidth+8)+",height="+(nScreenHeight+8) );
			oWin1.resizeTo( nScreenWidth + 8, nScreenHeight + 8  );
			oWin1.moveTo( -4, -4 );
			return false;
		}
		else if( "popFrame" == oSrc.target )
		{
			window.open( oSrc.href, "_blank", "location=no,resizable=0,scrollbars=yes,menubar=no,toolbar=no,status=no,width=360,height=190,top=200,left=300");
			return false;
		}
	}
}

if ( "function" == typeof(doClick) )
{
	document.onclick = doClick;
}

function toggleTree (meId,meOpenMode)
{
  var me = eval("document.all."+meId)
   flagIt(me, me.checked,meOpenMode);
   if (meOpenMode=="1" || meOpenMode=="3")
   {
   	 toggleChildren(me, me.checked,meOpenMode);
   }
   if (meOpenMode=="1" || meOpenMode=="2")
   {
   	 toggleParents(me, me.checked,meOpenMode);
   }
}

function flagIt(me, markValue,meOpenMode)
{
  if (!me.disabled)
  {
    me.checked = markValue;
	//alert(me.fold)

   //if ((meOpenMode=="1" || meOpenMode=="3")&&markValue==true)
   //{
    display(me);
   //}
  
  }
}
function display(me)
{ oParent = me.parentElement;
  oNode = oTreeXml.documentElement.selectSingleNode( "//node[@inputID = '"+ me.id +"']" );
	if (document.all(oNode.attributes.getNamedItem("id").value))
	{

		oDiv = document.all(oNode.attributes.getNamedItem("id").value);
		if ( "no" == oDiv.load )
    		{
			strHTML = oNode.transformNode( oSubXsl );
			strHTML = strHTML.replace(rImg1,"<img src=/images/tree/img-vert-line.gif height=16 align=texttop>");
			strHTML = strHTML.replace(rImg2,"<img src=/images/tree/img-blank.gif height=16 align=texttop>");		
			oDiv.innerHTML = strHTML;			
			oDiv.load = "yes";			
		}

		strFlag	= oDiv.style.display;
		nImgNum = oParent.all.tags("IMG").length;
		oImg	= oParent.all.tags("IMG");
		if ( "none" == strFlag )
		{
			oDiv.style.display = "block";
			oImg[ nImgNum-2 ].src = oImg[ nImgNum-2 ].src.replace(r1,"2\.gif");	
		}
	}
  
}
function toggleChildren(me, checkValue,meOpenMode)
{
   var i = 0;
   var children = getChildren(me);
   if (children.length == 0) return;
   for (i = 0; i < children.length; i++)
   {
     flagIt(children[i], checkValue,meOpenMode);
     toggleChildren(children[i], checkValue,meOpenMode);
   }
}

function toggleParents(me, checkValue,meOpenMode)
{
  var i = 0;
  if (! checkValue)
  {
    var siblings = getSiblings(me);
    for (i = 0; i < siblings.length; i++)
    {
      if (siblings[i].checked != checkValue) return;
    }
  }
  var parent = getParent(me);
  if (parent == undefined) return;
  flagIt(parent, checkValue,meOpenMode);
  toggleParents(parent, checkValue,meOpenMode);
}

function getSiblings(me)
{
   var siblings = new Array();
   siblings = getChildren(getParent(me));
   return siblings;
}


function getParent(me)
{
  var strID=me.id;
  strID=strID.substring(0,strID.lastIndexOf("$"));
  if (strID.length == 0) return;
  var parent;
  eval("parent = document.all." + strID );
  if (parent != undefined) return parent;
}


function getChildren(me)
{
  if (me == undefined) return new Array();
  var children = new Array();
  var i,objCHK,strMeID,strTempID;
  strMeID=me.id;
  for (i=0;i<document.myForm.length;i++)
  {
    eval("objCHK=document.myForm("+i+")")
         strTempID=objCHK.id;
    if(strTempID.lastIndexOf(strMeID)==0)
    {
      if(numOfSubString(strTempID,"$")-numOfSubString(strMeID,"$")==1)
      {
        children.push(objCHK);
      }
      else
      {
        continue;
      }
    }
    else
    {
      continue;
    }
  }
  return children;
}

function numOfSubString(str1,str2)
{
  var t;
  t=0;
  while(str1.indexOf(str2)!=-1)
  {
    str1=str1.slice(str1.indexOf(str2)+1);
    t=t+1;
  }
  return t;
}

function openTree(id)
{
  oNode = oTreeXml.documentElement.selectSingleNode( "//node[@id = '"+ id +"']" );
  openIt(oNode);
  openChildren(oNode);
}

function openIt(oNode)
{ 
  //oParent = me.parentElement;
  me = document.all(oNode.attributes.getNamedItem("inputID").value);
  oParent = me.parentElement;
  strHTML = oNode.transformNode( oSubXsl );
  strHTML = strHTML.replace(rImg1,"<img src=/images/tree/img-vert-line.gif height=16 align=texttop>");
  strHTML = strHTML.replace(rImg2,"<img src=/images/tree/img-blank.gif height=16 align=texttop>");
  oDiv = document.all(oNode.attributes.getNamedItem("id").value);
  oDiv.innerHTML = strHTML;
  oDiv.load = "yes";
		
  nImgNum = oParent.all.tags("IMG").length;
  oImg	= oParent.all.tags("IMG");
  oDiv.style.display = "block";//将展开此节点
  oImg[ nImgNum-2 ].src = oImg[ nImgNum-2 ].src.replace(r1,"2\.gif");	
}

function openChildren(me)
{
  var i = 0;
  var children = getNodeChildren(me);
  if (children.length == 0) return;
  for (i = 0; i < children.length; i++)
  {
    var subChildren = getNodeChildren(children[i]);
    if (subChildren.length == 0)
    {
      continue;
    }
    else
    {
      openIt(children[i]);
      openChildren(children[i]);
    }
  }
}

function getNodeChildren(me)
{
  var children = new Array();
  var i=0;
  for (i = 0;i < me.childNodes.length;i++)
  {
    children.push(me.childNodes.item(i));
  }
  return children;
}
//用于初始化时强行选中,一般需要先调用openTree
// 	receiveDepaTree.openTree('$V0V0V');//receiveDepaTree为iframe名称,$V0V0V为跟节点ID
// 	receiveDepaTree.toggleTreeByID('V0V607V',1);//V0V607V为要选中的inputValue

function toggleTreeByID (Id,meOpenMode)
{//alert(meId);
  oNode = oTreeXml.documentElement.selectSingleNode( "//node[@inputValue = '"+ Id +"']" );

 //alert(oNode.attributes.getNamedItem("inputID").value)
  var me = eval("document.all."+oNode.attributes.getNamedItem("inputID").value)
   flagIt(me, true,meOpenMode);
   if (meOpenMode=="1" || meOpenMode=="3")
   {
   	 toggleChildren(me, true,meOpenMode);
   }
   if (meOpenMode=="1" || meOpenMode=="2")
   {
   	 toggleParents(me, true,meOpenMode);
   }
}

function openTreeNode(currentNodeID,openNodeID)
{
  if(openNodeID.indexOf(currentNodeID)!=-1){
  //打开当前节点
  //alert(currentNodeID+","+openNodeID);
  currentNode = oTreeXml.documentElement.selectSingleNode( "//node[@id = '"+ currentNodeID +"']" );
  //alert(currentNode);
  openIt(currentNode);
  //alert("open id="+currentNodeID);
  //如果openNodeID包含currentNodeID,递归调用自身下子节点  
      var i = 0;
	  var children = getNodeChildren(currentNode);
	  if (children.length==null||children.length == 0){
	  }
	  else
	  {    
		  for (i = 0; i < children.length; i++)
		  {
	        var subChildren = getNodeChildren(children[i]);
		    if (subChildren.length==null||subChildren.length == 0)
		    {
		      continue;
		    }else{
		      var subNodeID= children[i].attributes.getNamedItem("id").value;
		      openTreeNode(subNodeID,openNodeID);
		    }
		  }
	  }
  }
}

 function openTreeNodes(currentNodeID,openNodeIDs)
{
  var list=openNodeIDs;
  var hasNode=false;
  var openNodeID;
  for(var i=0;i<openNodeIDs.length;i++){
    if(openNodeIDs[i].indexOf(currentNodeID)!=-1){
      hasNode=true;
      openNodeID=openNodeIDs[i];
    }
  }
  if(hasNode){
	  //打开当前节点
	  //alert(currentNodeID+","+openNodeID);
	  currentNode = oTreeXml.documentElement.selectSingleNode( "//node[@id = '"+ currentNodeID +"']" );
	  //alert(currentNode);
	  openIt(currentNode);
	  //alert("open id="+currentNodeID);
	  //如果openNodeID包含currentNodeID,递归调用自身下子节点  
      var i = 0;
	  var children = getNodeChildren(currentNode);
	  if (children.length==null||children.length == 0){
	  }
	  else
	  {    
		  for (i = 0; i < children.length; i++)
		  {
	        var subChildren = getNodeChildren(children[i]);
		    if (subChildren.length==null||subChildren.length == 0)
		    {
		      continue;
		    }else{
		      var subNodeID= children[i].attributes.getNamedItem("id").value;
		      openTreeNodes(subNodeID,openNodeIDs);
		    }
		  }
	  }
  }		  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -