📄 tree.js
字号:
var nodeImgList;
var indentList;
var nodeList;
var objContainer;
var nodeSelected = null;
var BRANCH = 0;
var LEAF = 1;
var MethodId = 0;
var NodeId = 0;
var SortList = null;
function TreeNode()
{
var id;
var text;
var parentId;
var parentText;
var hasChild;
var num;
}
function imgList(strRoot,strFolderClosed,strFolderOpened,strNode,strEmpty,strLine,strJoin,strJoinBottom,strPlus,strPlusBottom,strMinus,strMinusBottom,strNlPlus,strNlMinus)
{
this.root = strRoot;
this.folderClosed = strFolderClosed;
this.folderOpened = strFolderOpened;
this.node = strNode;
this.empty = strEmpty;
this.line = strLine;
this.join = strJoin;
this.joinBottom = strJoinBottom;
this.plus = strPlus;
this.plusBottom = strPlusBottom;
this.minus = strMinus;
this.minusBottom = strMinusBottom;
this.nlPlus = strNlPlus;
this.nlMinus = strNlMinus;
}
function createTree()
{
initData();
}
function initData()
{
nodeImgList = new imgList("images/base.gif","images/folderclosed.gif","images/folderopened.gif","images/page.gif","images/empty.gif","images/line.gif","images/join.gif","images/joinbottom.gif","images/plus.gif","images/plusbottom.gif","images/minus.gif","images/minusbottom.gif","images/nolines_plus.gif","images/nolines_minus.gif");
indentList = new Array();
getData();
processData();
}
function getData()
{
nodeList = new Array();
for (var i = 0; i < SortList.length; i++)
{
var node = new TreeNode();
//node.id = SortList[i][3];
node.id = i;
node.text = SortList[i][2];
node.parentText = SortList[i][1];
node.parentId = getNodeIndexByText(SortList[i][1]);
node.num = SortList[i][3];
node.hasChild = SortList[i][4];
nodeList[i] = node;
}
}
function getNodeIndexByText(nodeText)
{
var index = -1;
for (var i = 0; i < SortList.length; i++)
{
if (SortList[i][0] == nodeText)
{
// index = SortList[i][3];
index = i;
break;
}
}
return index;
}
function processData()
{
objContainer = document.getElementById("divTree");
clearNodes(objContainer);
objContainer.appendChild(createItem(-1));
}
function getNodeList(parentId)
{
var nodes = new Array();
var length = nodeList.length;
for (var i = 0; i < length; i++)
{
var node = nodeList[i];
if(node.parentId == parentId)
{
nodes.push(node);
}
}
return nodes;
}
function createItem(parentId)
{
var imgSrc = "";
var imgSrc0 = "";
var imgSrcOpened = nodeImgList.folderOpened;
var imgSrcClosed = nodeImgList.folderClosed;
var imgSrcNode = nodeImgList.node;
var arrNodes = getNodeList(parentId);
var length = arrNodes.length;
var eleDIV = createDivElement();
for (var i = 0; i < length; i ++)
{
var eleDIV1 = createDivElement();
var nodeText = arrNodes[i].text;
var id = arrNodes[i].id;
createIndent(eleDIV1);
if (hasChild(id))
{
if (i == (length - 1))
{
indentList.push(0);
imgSrc = nodeImgList.minusBottom;
imgSrc0 = nodeImgList.plusBottom;
}
else
{
indentList.push(1);
imgSrc = nodeImgList.minus;
imgSrc0 = nodeImgList.plus;
}
var node = createImgElementById(id,imgSrcOpened,imgSrcClosed,imgSrc0,imgSrc);
// var nodeOpened = createStateImgElement(id,imgSrcOpened);
// var nodeCHK = createCheckBox(id,strText,BRANCH,strParentID);
eleDIV1.appendChild(node);
// eleDIV1.appendChild(nodeOpened);
// eleDIV1.appendChild(nodeCHK);
eleDIV1.appendChild(createAElement(id,nodeText));
var divItem = createDivElementById(id);
divItem.appendChild(createItem(id));
eleDIV1.appendChild(divItem);
eleDIV.appendChild(eleDIV1);
}
else
{
if (i == (length - 1))
{
imgSrc = nodeImgList.joinBottom;
}
else
{
imgSrc = nodeImgList.join;
}
eleDIV1.appendChild(createImgElement(imgSrc));
// var nodeCHK = createCheckBox(i,strText,LEAF,strParentID);
// eleDIV1.appendChild(nodeCHK);
// eleDIV1.appendChild(createImgElement(imgSrcNode));
eleDIV1.appendChild(createAElement(id,nodeText));
eleDIV.appendChild(eleDIV1);
}
}
indentList.pop();
return eleDIV;
}
function createAElement(strID,strTEXT)
{
var eleA = document.createElement("a");
var onClick = "SelectedIndexChanged(this,'" + strID + "'); ";
eleA.setAttribute("id","a" + strID);
eleA.setAttribute("href","javascript:SelectedIndexChanged(this,\"" + strID + "\");");
eleA.appendChild(document.createTextNode(strTEXT));
return eleA;
}
function createDivElement()
{
var eleDIV = document.createElement("div");
eleDIV.setAttribute("class","dtree");
eleDIV.setAttribute("className","dtree");
return eleDIV;
}
function createDivElementById(id)
{
var eleDIV = document.createElement("div");
eleDIV.setAttribute("id","div" + id);
eleDIV.style.display = "none";
return eleDIV;
}
function createImgElement(imgSrc)
{
var img = document.createElement("img");
img.setAttribute("src",imgSrc);
return img;
}
function createStateImgElement(strID,imgSrc)
{
var img = document.createElement("img");
img.setAttribute("src",imgSrc);
img.setAttribute("id","img" + strID);
return img;
}
function createImgElementById(strID,imgSrcOpened,imgSrcClosed,imgSrc0,imgSrc)
{
var img = document.createElement("img");
img.setAttribute("src",imgSrc0);
img.onclick = function() { SetDisplay(this,strID,imgSrcOpened,imgSrcClosed,imgSrc0,imgSrc);};
return img;
}
function hasChild(strID)
{
var flag = false;
var length = nodeList.length;
for (var i = 0; i < length; i ++)
{
if (nodeList[i].parentId == strID)
{
flag = true;
break;
}
}
return flag;
}
function createIndent(objContainer)
{
var length = indentList.length;
var imgSrc = "";
for (var i = 0;i < length;i++)
{
if(indentList[i] == 1)
{
imgSrc = nodeImgList.line;
}
else
{
imgSrc = nodeImgList.empty;
}
objContainer.appendChild(createImgElement(imgSrc));
}
}
function clearNodes(objContainer)
{
while(objContainer.childNodes.length > 0)
{
objContainer.removeChild(objContainer.childNodes[0]);
}
}
function SetDisplay(obj,strID,strImgOpened,strImgClosed,strImg1,strImg2)
{
id = "div" + strID;
if (document.getElementById(id).style.display == "none")
{
obj.src = strImg2;
// document.getElementById("img"+strID).src = strImgOpened;
document.getElementById(id).style.display = "block";
}
else
{
obj.src = strImg1;
// document.getElementById("img"+strID).src = strImgClosed;
document.getElementById(id).style.display = "none";
}
}
function SelectedIndexChanged(obj,id)
{
var newSel = document.getElementById("a" + id);
if (nodeSelected != null)
{
var oldSel = document.getElementById("a" + nodeSelected);
if (oldSel != null)
{
oldSel.setAttribute("className","node");
oldSel.setAttribute("class","node");
}
}
nodeSelected = id;
newSel.setAttribute("className","nodeSel");
newSel.setAttribute("class","nodeSel");
var showAddChildMenu = false;
var node = GetNodeById(id);
if (node != null)
{
if (node.parentId == -1)
{
showAddChildMenu = true;
}
}
ShowMenu(id,showAddChildMenu);
}
function createCheckBox(strID,strText,intType,strParentID)
{
var chkBox = document.createElement("input");
var id = "chk";
id = id + strID;
chkBox.setAttribute("type","checkbox");
chkBox.setAttribute("id",id);
chkBox.setAttribute("className","chkbox01");
chkBox.setAttribute("class","chkbox01");
chkBox.setAttribute("value",strID);
chkBox.setAttribute("text",strText);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -