📄 tree.js
字号:
var cTreeHTMLBeforeNode = "<table id=\"?id?\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td>?text?</td></tr><tr><td>";
var cTreeNodeHTMLBeforeNode = "<table id=\"?id?\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td width=\"15\" class=\"?Last??End?\"></td><td>?text?</td></tr><tr style=\"display:none;\"><td width=\"15\" background=\""+System.Path()+"v_line.gif\"></td><td >";
var cHTMLAfterNode = "</td></tr></table>";
var NS4 = (document.layers) ? 1 : 0;
var IE4 = (document.all) ? 1 : 0;
var ver4 = (NS4 || IE4) ? 1 : 0;
function TreeView(id,text,hint,oncontextmenu)
{
this.Id = id;
this.Text = text;
this.Hint = hint;
if(typeof(oncontextmenu)!="undefined")
this.OnContextMenu = oncontextmenu;
else
this.OnContextMenu = null;
this.Nodes = [];
this.HTMLBeforeNode = function()
{
return cTreeHTMLBeforeNode.replace("?id?",id).replace("?text?",text);
}
this.AddNode = function(aTreeNode)
{
var len = this.Nodes.length;
if(len>0)
this.Nodes[len-1].IsLast = false;
this.Nodes[len] = aTreeNode;
aTreeNode.NodeLevel = 1;
}
this.Add = function(id,text,hint,tag,onclick)
{
this.AddNode(new TreeNode(id,text,hint,tag,onclick));
}
this.AddPath = function(path)
{
var arr,i,l,node_id,node_text,str_node,str_path
arr = path.split("/");
l = arr.length;
str_node = "this";
str_path = "";
for(i=0;i<l;i++)
{
node_id = "tn_" + arr[i];
node_text = arr[i];
str_path += node_text + "/";
if(eval(str_node).Node(node_id)==null)
eval(str_node).Add(node_id,node_text,"",str_path);
//else
// this.Node(node_id).AddPath();
str_node += ".Node(\"" + node_id + "\")"
//to be continued
}
}
this.FindNode = function(id)
{
var node;
for(i=0;i<this.Nodes.length;i++)
//if(this.Nodes[i].Id==id)
//this.Nodes[i].FindNode(id);
//else
//this.Nodes[i].FindNode(id);
return ;
}
this.Node = function(id)
{
for(i=0;i<this.Nodes.length;i++)
if(this.Nodes[i].Id==id)
return this.Nodes[i];
return null;
}
this.WriteHTML = function()
{
var i;
document.write(this.HTMLBeforeNode());
for(i=0;i<this.Nodes.length;i++)
this.Nodes[i].WriteHTML();
//TreeNodeWriteHTML(this.Nodes[i]);
document.write(cHTMLAfterNode);
}
this.UpdateHTML = function()
{
var ctl = document.all(this.Id);
ctl.onclick = TreeNodeOnClick;
ctl.onmouseover = TreeNodeOnMouseOver;
ctl.onmouseout = TreeNodeOnMouseOut;
ctl.oncontextmenu = this.OnContextMenu;
var i;
for(i=0;i<this.Nodes.length;i++)
this.Nodes[i].UpdateHTML();
}
}
function TreeNode(id,text,hint,tag,onclick)
{
this.Nodes = [];
this.Id = id;
this.Text = text;
this.Hint = hint;
this.Tag = tag;
this.NodeLevel = 0;
if(typeof(onclick)=="undefined")
this.OnClick = null/*TreeNodeOnClick*/;
else
this.OnClick = onclick;
this.OnMouseOver = null/*TreeNodeOnMouseOver*/;
this.OnMouseOut = null/*TreeNodeOnMouseOut*/;
this.OnContextMenu = null;
this.IsEnd = true;
this.IsLast = true;
this.AddNode = function(aTreeNode)
{
var len = this.Nodes.length;
this.IsEnd = false;
if(len>0)
this.Nodes[len-1].IsLast = false;
//aTreeNode.IsLast = true;
this.Nodes[len] = aTreeNode;
aTreeNode.NodeLevel = this.NodeLevel +1;
}
this.Add = function(id,text,hint,tag,onclick)
{
this.AddNode(new TreeNode(id,text,hint,tag,onclick));
}
this.Remove = function(id,text)
{
if(this.Nodes.length>0)
{
this.Nodes.length = this.Nodes.length-1;
if(this.Nodes.length==0)
this.IsEnd = true;
}
}
this.Clear = function()
{
this.Node.length = 0;
this.IsEnd = true;
}
this.HTMLBeforeNode = function()
{
var str_res = cTreeNodeHTMLBeforeNode.replace("?id?",id).replace("?text?",text);
if(this.IsLast)
{
str_res = str_res.replace("?Last?","Last");
str_res = str_res.replace("<td width=\"15\" background=\""+System.Path()+"v_line.gif\">","<td width=\"15\">");
}
else
str_res = str_res.replace("?Last?","Mid");
if(this.IsEnd)
str_res = str_res.replace("?End?","End");
else
str_res = str_res.replace("?End?","Collapse");
return str_res;
}
this.Node = function(id)
{
for(i=0;i<this.Nodes.length;i++)
if(this.Nodes[i].Id==id)
return this.Nodes[i];
return null;
}
this.FindNode = function(id,aTreeNode)
{
if(typeof(aTreeNode == "undefined"))
aTreeNode = this;
for(i=0;i<aTreeNode.Nodes.length;i++)
if(aTreeNode.Nodes[i].Id==id)
return aTreeNode.Nodes[i];
else
FindNode(id,aTreeNode.Nodes[i]);
return null;
}
this.WriteHTML = function(aTreeNode)
{
var i;
if(typeof(aTreeNode)=="undefined")
aTreeNode = this;
document.write(aTreeNode.HTMLBeforeNode());
if(aTreeNode.Nodes.length>0)
for(i=0;i<aTreeNode.Nodes.length;i++)
TreeNodeWriteHTML(aTreeNode.Nodes[i]);
document.write(cHTMLAfterNode);
}
this.UpdateHTML = function()
{
var ctl = document.all(this.Id);
ctl.onclick = this.OnClick;
ctl.onmouseover = this.OnMouseOver;
ctl.onmouseout = this.OnMouseOut;
ctl.oncontextmenu = this.OnContextMenu;
ctl.title = this.Hint;
ctl.tag = this.Tag;
ctl.nodelevel = this.NodeLevel;
var i;
for(i=0;i<this.Nodes.length;i++)
this.Nodes[i].UpdateHTML();
}
}
function TreeNodeWriteHTML(aTreeNode)
{
var i;
document.write(aTreeNode.HTMLBeforeNode());
if(aTreeNode.Nodes.length>0)
for(i=0;i<aTreeNode.Nodes.length;i++)
TreeNodeWriteHTML(aTreeNode.Nodes[i]);
document.write(cHTMLAfterNode);
}
function TreeNodeOnClick()
{
if(typeof(window.event.srcElement.parentElement.parentElement.parentElement.nodelevel) == "undefined")
return;
var ctl_tn,chld_container,str_clsname;
if (!ver4) return;
if (IE4)
{
//get treenode
ctl_tn = window.event.srcElement.parentElement.parentElement.parentElement;
//get first <td>'s className of treenode
str_clsname = ctl_tn.childNodes[0].childNodes[0].childNodes[0].className;
if(str_clsname.indexOf("End")<0)
if(str_clsname.indexOf("Open")>0)
ctl_tn.childNodes[0].childNodes[0].childNodes[0].className = str_clsname.replace("Open","Collapse");
else
ctl_tn.childNodes[0].childNodes[0].childNodes[0].className = str_clsname.replace("Collapse","Open");
chld_container = ctl_tn.childNodes[0].childNodes[1];
//if the event node is the end of the tree do nothing
if(chld_container.childNodes[1].innerHTML!="")
//switch display of child node
if (chld_container.style.display == "none")
chld_container.style.display = "block";
else
chld_container.style.display = "none";
//add your operation here
//window.open("list.asp?dir=" + ctl_tn.tag,"main_frame");
}
//return ;
/******************************************************************************
else
{
whichEl = eval("document." + el + "Child");
for(i=1;i<=numTotal;i++)
{
whichEl = eval("document." + scores[i] + "Child");
if(whichEl!=whichEl1)
whichEl.visibility = "hide";
}
if (whichEl.visibility == "hide")
whichEl.visibility = "show";
else
whichEl.visibility = "hide";
arrange();
}
/******************************************************************************/
}
function TreeNodeOnMouseOver()
{
if (!ver4) return;
/******************************************************************************
if (IE4)
{
/******************************************************************************/
if(typeof(window.event.srcElement.parentElement.parentElement.parentElement.nodelevel) == "undefined")
return;
window.event.cancelBubble = true;
window.event.srcElement.parentElement.childNodes[1].className = "MouseOver";
window.event.srcElement.parentElement.childNodes[1].style.cursor = "default";
/******************************************************************************
}
else
{
}
/******************************************************************************/
}
function TreeNodeOnMouseOut()
{
if (!ver4) return;
/******************************************************************************
if (IE4)
{
/******************************************************************************/
if(typeof(window.event.srcElement.parentElement.parentElement.parentElement.nodelevel) == "undefined")
return;
window.event.cancelBubble = true;
window.event.srcElement.parentElement.childNodes[1].className = "MouseOut";
window.event.srcElement.parentElement.childNodes[1].style.cursor = "auto";
/******************************************************************************
}
else
{
}
/******************************************************************************/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -