📄 tree_level_nofileimage.js
字号:
function drawRootLevel() {
rStrTree += "<table border='0' cellspacing='0' cellpadding='0'>";
rStrTree += "<tr ><td>";
rStrTree += "<a onFocus='this.blur()' href='#' ><img border='0' src='"+img_folder_close+"'></a>";
rStrTree += "</td><td valign='middle' style='FONT-SIZE: 12px'>";
rStrTree += this.root.name;
rStrTree += "</td></tr>";
rStrTree += "</table>";
}
var strTree = "";
var rStrTree = ""; // 根节点对应html代码(分层展示)
/***/
/* 通过每个节点img部分的Id来得到其srcIndex,以用于该节点的展开
modify by yancj 2004-1-5
*/
var fID = 0;
/** 画出节点 */
function drawNode(node) {
strTree += "<table border='0' cellspacing='0' cellpadding='0'>";
strTree += "<tr ><td id='" + node.id + "'>";
var fIDid = fID++;
this.drawFrontLine(node);
if (node.type == "folder")
{
strTree += "<a onClick='clickOnFolder()' onFocus='this.blur()' style='cursor:hand;'><img id='" + (fIDid) + "' border='0' src='"+node.fImage+"'></a>";
strTree += "<a onFocus='this.blur()' href='#'><img border='0' src='"+node.image+"'></a>";
strTree += "</td><td valign='middle'>";
strTree += "<a onFocus='this.blur()' id='folderLink' href='"+node.orgname+"' target='"+node.code+"' >"+node.name+"</a>";
} else {
strTree += "<img border='0' src='"+node.fImage+"'>";
strTree += "<a onFocus='this.blur()' href='"+node.orgname+"' target='"+node.code+"')><img border='0' src='"+node.image+"'></a>";
strTree += "</td><td valign='middle'>";
strTree += "<a onFocus='this.blur()' href='"+node.orgname+"' target='"+node.code+"') >"+node.name+"</a>";
}
strTree += "</td></tr>";
strTree += "</table>";
// 对所有符合查询条件的节点
for(i = 0; i < ids.length; i++) {
if (ids[i] == node.id) {
// 将该节点img对应的Id写到数组里去,当页面节点树建立后,对所有符合条件的节点展开
srcids[idx++] = fIDid;
}
}
}
/** 画出节点(全部展开)liuhr */
function drawAllNode(node) {
strTree += "<table border='0' cellspacing='0' cellpadding='0'>";
strTree += "<tr ><td id='" + node.id + "'>";
var fIDid = fID++;
this.drawFrontLine(node);
if (node.type == "folder")
{
strTree += "<img border='0' src='"+img_minus_last+"'></td>";
strTree += "<td><a onFocus='this.blur()' href='#' ><input id='Ck" + node.id + "' type='checkbox' value='1' onclick='selected()'></a></td><td><img border='0' src='"+node.image+"'>";
strTree += "</td><td valign='middle'>";
strTree += "<a onFocus='this.blur()' id='"+node.id+"' onclick='selected()' href='#'>"+node.name+"</a>";
} else {
strTree += "<img border='0' src='"+node.fImage+"'></td>";
strTree += "<td><a onFocus='this.blur()' href='#'><input id='Ck" + node.id + "' type='checkbox' value='checkbox' onclick='selected()' ></a></td><td><img border='0' src='"+node.image+"'>";
strTree += "</td><td valign='middle'>";
strTree += "<a onFocus='this.blur()' id='"+node.id+"' onclick='selected()' href='#' >"+node.name+"</a>";
}
strTree += "</td></tr>";
strTree += "</table>";
// 对所有符合查询条件的节点
for(i = 0; i < ids.length; i++) {
if (ids[i] == node.id) {
// 将该节点img对应的Id写到数组里去,当页面节点树建立后,对所有符合条件的节点展开
srcids[idx++] = fIDid;
}
}
}
/** 画出节点(分层展示),clickOnFolderLevel事件需要参数,并且实现方式不同
* add by yancj 2004.2.9
*/
function drawNodeLevel(node) {
strTree += "<table border='0' cellspacing='0' cellpadding='0'>";
strTree += "<tr ><td nowrap id='" + node.id + "'>";
var fIDid = fID++;
this.drawFrontLine(node);
if (node.type == "folder")
{
var norgname=node.orgname;
strTree += "<a onClick=\"clickOnFolderLevel('" +node.id+"','"+node.name+"', '"+node.parentId+"','"+node.type+"','"+norgname+"','"+node.code+"')\"";
strTree += " onFocus='this.blur()' href='#'><img id='" + fIDid + "' border='0' src='"+node.fImage+"'></a>";
strTree += "<a onFocus='this.blur()' href='#'><img border='0' src='"+node.image+"'></a>";
strTree += "</td><td nowrap valign='middle'>";
strTree += "<a onFocus='this.blur()' id='folderLink' href='"+node.orgname+"' target='"+node.code+"' >"+node.name+"</a>";
} else {
strTree += "<img border='0' src='"+node.fImage+"'>";
strTree += "<a onFocus='this.blur()' href='"+node.orgname+"' target='"+node.code+"')><img border='0' src='"+node.image+"'></a>";
strTree += "</td><td nowrap valign='middle'>";
strTree += "<a onFocus='this.blur()' href='"+node.orgname+"' target='"+node.code+"') >"+node.name+"</a>";
}
strTree += "</td></tr>";
strTree += "</table>";
levelids[lidx++] = fIDid;
// 对所有符合查询条件的节点
for(i = 0; i < ids.length; i++) {
if (ids[i] == node.id) {
// alert(node.id);\
// 将该节点img对应的Id写道数组里去,当页面节点树建立后,对所有符合条件的节点展开
srcids[idx++] = fIDid;
// 展开符合条件的节点的父节点
addParentID(node);
}
}
}
/***/
/** 将父节点的img对应Id加入数组
add by yancj 2004-1-5
*/
function addParentID(node) {
try {
// alert("childID: "+node.id);
var pNode = tree.getParent(node);
// alert("parentID: "+pNode.id);
if (pNode != null) {
var aTag = findATag(document.getElementById(pNode.id).firstChild);
srcids[idx++] = aTag.firstChild.id;
// 递归
addParentID(pNode);
}
}
catch (E) {
}
}
/** 将父节点的img对应Id加入数组
add by yancj 2004-2-10
*/
function addParentIDById(nodeId) {
try {
// alert("childID: "+nodeId);
var pId = tree.getParentId(nodeId);
//alert("parentID: "+pId);
if (pId != null) {
var aTag = findATag(document.getElementById(pId).firstChild);
srcids[idx++] = aTag.firstChild.id;
// 递归
addParentIDById(pId);
}
}
catch (E) {
}
}
/* 找出<a 后包含的img
add by yancj 2004-1-5
*/
function findATag(docNode) {
// alert("aTag? " + docNode.nodeName);
if (docNode.nodeName == 'A')
return docNode;
else
return findATag(docNode.nextSibling);
}
/** 画出整个树的节点组
modify by yancj 2004.1.5
for 画第一个符合查询条件的节点
*/
function drawNodes(node) {
if (node.type != "root")
{
strTree += "<div style='display:none'>";
}
for (var i=1;i<this.length;i++)
{
if (this.nodes[i].parentId!=null && this.nodes[i].parentId == node.id)
{
if(this.nodes[i].id==this.firstSearchNodeId){
// 画出符合条件的第一个节点
this.drawFirstSearchNode(this.nodes[i]);
}else{
this.drawNode(this.nodes[i]); //画出节点
}
this.drawNodes(this.nodes[i]); //递归画出整个节点组的节点
}
}
if (node.type != "root")
{
strTree += "</div>";
}
}
/** 画出整个树的节点组
(全部展开)liuhr
*/
function drawAllNodes(node) {
for (var i=1;i<this.length;i++)
{
if (this.nodes[i].parentId!=null && this.nodes[i].parentId == node.id)
{
if(this.nodes[i].id==this.firstSearchNodeId){
// 画出符合条件的第一个节点
this.drawFirstSearchNode(this.nodes[i]);
}else{
this.drawAllNode(this.nodes[i]); //画出节点
}
this.drawAllNodes(this.nodes[i]); //递归画出整个节点组的节点
}
}
}
/** 画出当前节点的一级子节点组
* add by yancj 2004.1.9
* 使用div来插入一级子节点组的html代码。div的id为当前节点id,加前缀d
*/
function drawNodesLevel(node) {
strTree="";
// alert(" drawNodesLevel ");
for (var i=1;i<this.length;i++)
{
if (this.nodes[i].parentId!=null && this.nodes[i].parentId == node.id)
{
if(this.nodes[i].id==this.firstSearchNodeId){
// 画出符合条件的第一个节点;
this.drawFirstSearchNode(this.nodes[i]);
}else{
this.drawNodeLevel(this.nodes[i]); //画出节点
if (this.nodes[i].type == "folder")
{
strTree += "<div style='display:none' id='d" + this.nodes[i].id + "'>";
strTree += "</div>";
}
}
}
}
if (node.type == "root")
{
strTree = rStrTree + strTree; // 画根节点的html代码
}
}
/** 画出节点前的前导图片,有空格或线条图片.
如果其父节点是一个末节点,那么该对应列的前导图片为空格图片.
如果不是末节点,应该添加线条图片.
这里进行了递归运算,但由于其图片顺序为反顺序,所以设置一个tempStr来暂存需要画出的图片,
用以保证其图片顺序为正确顺序. */
function drawFrontLine(node) {
var tempStr = "";
for (var i=1;i<this.length;i++)
{
if (this.nodes[i].id == node.parentId)
{
if (this.nodes[i].isLast)
{
tempStr = "<img src='"+img_blank+"'>" + tempStr;;
} else {
tempStr = "<img src='"+img_line+"'>" + tempStr;
}
this.drawFrontLine(this.nodes[i]);
}
}
strTree += tempStr;
}
/** 当点击目录节点的前导"加号|减号"图片时,展开层或收缩层,并用相应的图片替代现有图片,实现动态收缩动作 */
function clickOnFolder() {
var srcIndex = event.srcElement.sourceIndex;
var divElement = document.all[srcIndex+5]; //得到层对象
var imgElement = document.all[srcIndex+2]; //得到图片对象
var fimgElement = document.all[srcIndex]; //得到前导图片对象(即它本身)
if (divElement.style.display == "none")
{
divElement.style.display = "";
imgElement.src=img_folder_open;;
if (fimgElement.src!=null && fimgElement.src.indexOf(img_plus)!=-1)
{
fimgElement.src=img_minus;
} else {
fimgElement.src=img_minus_last;
}
} else {
divElement.style.display = "none";
imgElement.src=img_folder_close;
if (fimgElement.src!=null && fimgElement.src.indexOf(img_minus)!=-1)
{
fimgElement.src=img_plus;;
} else {
fimgElement.src=img_plus_last;
}
}
}
/**
* 展开一级子目录方式: 当点击目录节点的前导"加号|减号"图片时,展开层或收缩层,并用相应的图片替代现有图片,实现动态收缩动作
* add by yancj 2004.4.9
*/
/**
* 展开一级子目录方式: 当点击目录节点的前导"加号|减号"图片时,展开层或收缩层,并用相应的图片替代现有图片,实现动态收缩动作
* add by yancj 2004.4.9
*/
function clickOnFolderLevel(nid, nname, nparentId, ntype, norgname, ncode) {
tree.drawNodesLevel(new node(nid, nname, nparentId,ntype, norgname, ncode));
var dId="d"+nid;
document.getElementById(dId).innerHTML=strTree;
// alert("hello");
var srcIndex = event.srcElement.sourceIndex;
// alert(" the srcIndex: "+srcIndex);
var divElement = document.all[srcIndex+5]; //得到层对象
var imgElement = document.all[srcIndex+2]; //得到图片对象
var fimgElement = document.all[srcIndex]; //得到前导图片对象(即它本身)
if (divElement.style.display == "none")
{
// alert("22222");
// 得到当前目录节点的兄弟节点集合
this.getBrothers(new node(nid, nname, nparentId,ntype, norgname, ncode));
for(var i=0; i<tree.brothers.length;i++){
// alert(" the node type: "+tree.brothers[i].type);
if(tree.brothers[i].type == "folder") {
// alert("get brother id["+i+"]: "+tree.brothers[i].id);
var aTag = findATag(document.getElementById(tree.brothers[i].id).firstChild);
// alert(" the aTag: "+aTag);
// alert(" the brother srcIndex: "+document.getElementById(aTag.firstChild.id).sourceIndex);
clickCloseOnFolderLevel(document.getElementById(aTag.firstChild.id).sourceIndex, tree.brothers[i].id, tree.brothers[i].name, tree.brothers[i].parentId, tree.brothers[i].type, tree.brothers[i].orgname, tree.brothers[i].code);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -