📄 tree.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 + -