<!-- Beginning hiddenvar Tree = function(treeName) { // 创建“树对象”。其中,treeName 是该对象的名。可在此后用“document.treeName”来调用之。 this.create = function(name) { // 创建“树对象”。
this.trim = function(s) { // 去尾部空格
var i = 0;
for (i = s.length-1; i >= 0; i--) {if (s.charAt(i) != " ") break;}
return s.substring(0,i+1);
}
this.name = (name==null?"":this.trim(name)); // 树名。字母、数字、下划线,不可间空。
if (this.name==null || this.name=="") {
alert("树的名必须要有");
return null;
}
if (eval("(document." + this.name + "?true:false)")) {
alert("document." + this.name + "已经存在,请换一个树名");
return null;
}
//--------- 定义属性 --------------------------- this.hitFunctionName = "hitHandle"; // 点击节点后的动作函数
this.getSonFunctionName = "getSonNode"; // 展开时如无子节点,则将调用的函数
this.showIcon = true; // 是否要画各节点前的图标
this.showRoot = true; // 是否要显示根节点
this.hitClear = true; // 点击节点后,是否全不选所有检查盒
this.chooseMode = 2; // 选择了某节点后的处理方式:0,无动作;1:同时选中第1层子节点;2:同时选中所有子节点
this.generalColor = "#000000"; // 普通节点的颜色
this.currentColor = "#000000"; // 当前节点的颜色
this.generalBgColor = "#EEF7FF"; // 普通节点的底色
this.currentBgColor = "#a0a0a0"; // 当前节点的底色
this.imageDirectory = "treeImages/"; // 图符文件目录
this.imageOfVertLine = 'img_vert_line.gif'; // 形如“┃”的垂直连线
this.imageOfConCloseFolder = 'img_plus_cont.gif'; // 收拢之文件夹节点的、形如“┣”的加形图符
this.imageOfEndCloseFolder = 'img_plus_end.gif'; // 收拢之终结文件夹节点的、形如“┗”的加形图符
this.imageOfConOpenFolder = 'img_minus_cont.gif'; // 展开之文件夹节点的、形如“┣”的减形图符
this.imageOfEndOpenFolder = 'img_minus_end.gif'; // 展开之终结文件夹节点的、形如“┗”的减形图符
this.imageOfConLeaf = 'img_branch_cont.gif'; // 叶子节点的、形如“┣”的连线图符
this.imageOfEndLeaf = 'img_branch_end.gif'; // 终结叶子节点的、形如“┗”的连线图符
this.imageOfLeaf = 'img_leaf.gif'; // 叶子节点图标
this.imageOfOpenFolder = 'img_folder_open.gif'; // 展开的文件夹节点图标
this.imageOfCloseFolder = 'img_folder_close.gif'; // 收拢的文件夹节点图标
// ----- 以下是中间变量,不用改 -----------------
this.currentNode = null; // 当前点击的节点。
this.rootExist = false; // 根节点是否已存在。
this.root = null; // 根节点元素//---------- 载入函数 ----------- this.test = function() { // 检查参数
this.name = this.trim(this.name);
this.imageOfCloseFolder = this.trim(this.imageOfCloseFolder);
this.imageOfOpenFolder = this.trim(this.imageOfOpenFolder);
this.imageOfLeaf = this.trim(this.imageOfLeaf);
/*
if (this.name == "") {alert("树名不能为空"); return false;}
if (this.imageOfLeaf == "") { // 确保叶子图片文件非空;否则,不显示图标
if (this.imageOfOpenFolder == "") {
if (this.imageOfCloseFolder == "") {this.showIcon = false;}
else {this.imageOfLeaf = this.imageOfCloseFolder;}
}
else {this.imageOfLeaf = this.imageOfOpenFolder;}
}
if (this.showIcon) { // 此时,或者不显示图标,或者叶子图片文件非空
if (this.imageOfOpenFolder == "") {this.imageOfOpenFolder = this.imageOfLeaf;}
if (this.imageOfCloseFolder == "") {this.imageOfCloseFolder = this.imageOfOpenFolder;}
if (this.imageOfOpenFolder == "") {this.imageOfOpenFolder = this.imageOfCloseFolder;}
}
*/
return true;
}
this.hit = function(obj) { // 点击节点后进行的动作
if (this.currentNode != null) { // 去掉原当前节点的高亮显示
this.currentNode.node_row.style.color = this.generalColor;
this.currentNode.node_row.style.backgroundColor = this.generalBgColor;
this.currentNode.node_text.style.color = this.generalColor;
}
obj.node_row.style.color = this.currentColor; // 此3句是:高亮显示当前节点
obj.node_row.style.backgroundColor = this.currentBgColor;
obj.node_text.style.color = this.currentColor;
this.currentNode = obj;
if (this.hitClear) {this.resetCheckBox(false);} // 取消所有检查盒的选中
if (this.hitFunctionName != "") { // 根据需要,对点击动作做进一步的处理
eval(this.hitFunctionName + "('" + obj.node_name + "','" + obj.node_parameters + "')");
}
}
this.resetCheckBox = function(isChoose) { // 将所有节点的检查盒属性重置为指定值(isChoose)
this.root.resetCheckBox(isChoose);
}
this.findNode = function(nName) { // 寻找指定名的节点
return this.root.findNode(nName);
}
this.getImgTag = function(imgName, imgID, altText) {
if (imgName == null) {imgName = "";}
else {imgName = this.trim(imgName);}
if (altText == null) {altText = "";}
else {altText = this.trim(altText);}
if (imgID == null) {imgID = "";}
var ss = "";
if (imgName == "") {
ss = "<span" + (imgID==""?"":" id='"+imgID+"'") + " style='text-decoration:none;color:"+this.generalColor+"'>" + altText + "</span>";
}
else {ss = "<IMG ALIGN=absmiddle BORDER=0" + (imgID==""?"":" id='"+imgID+"'") + " alt='" + altText + "'"
+ " SRC='" + this.imageDirectory + imgName + "'>";
}
return ss;
}
this.trim = function(s) { // 去尾部空格
var i = 0;
for (i = s.length-1; i >= 0; i--) {if (s.charAt(i) != " ") break;}
return s.substring(0,i+1);
}
this.name = (name==null?"":this.trim(name)); // 树名。字母、数字、下划线,不可间空。
if (this.name==null || this.name=="") {
alert("树的名必须要有");
return null;
}
if (eval("(document." + this.name + "?true:false)")) {
alert("document." + this.name + "已经存在,请换一个树名");
return null;
}
//--------- 定义属性 --------------------------- this.hitFunctionName = "hitHandle"; // 点击节点后的动作函数
this.getSonFunctionName = "getSonNode"; // 展开时如无子节点,则将调用的函数
this.showIcon = true; // 是否要画各节点前的图标
this.showRoot = true; // 是否要显示根节点
this.hitClear = true; // 点击节点后,是否全不选所有检查盒
this.chooseMode = 2; // 选择了某节点后的处理方式:0,无动作;1:同时选中第1层子节点;2:同时选中所有子节点
this.generalColor = "#000000"; // 普通节点的颜色
this.currentColor = "#000000"; // 当前节点的颜色
this.generalBgColor = "#EEF7FF"; // 普通节点的底色
this.currentBgColor = "#a0a0a0"; // 当前节点的底色
this.imageDirectory = "treeImages/"; // 图符文件目录
this.imageOfVertLine = 'img_vert_line.gif'; // 形如“┃”的垂直连线
this.imageOfConCloseFolder = 'img_plus_cont.gif'; // 收拢之文件夹节点的、形如“┣”的加形图符
this.imageOfEndCloseFolder = 'img_plus_end.gif'; // 收拢之终结文件夹节点的、形如“┗”的加形图符
this.imageOfConOpenFolder = 'img_minus_cont.gif'; // 展开之文件夹节点的、形如“┣”的减形图符
this.imageOfEndOpenFolder = 'img_minus_end.gif'; // 展开之终结文件夹节点的、形如“┗”的减形图符
this.imageOfConLeaf = 'img_branch_cont.gif'; // 叶子节点的、形如“┣”的连线图符
this.imageOfEndLeaf = 'img_branch_end.gif'; // 终结叶子节点的、形如“┗”的连线图符
this.imageOfLeaf = 'img_leaf.gif'; // 叶子节点图标
this.imageOfOpenFolder = 'img_folder_open.gif'; // 展开的文件夹节点图标
this.imageOfCloseFolder = 'img_folder_close.gif'; // 收拢的文件夹节点图标
// ----- 以下是中间变量,不用改 -----------------
this.currentNode = null; // 当前点击的节点。
this.rootExist = false; // 根节点是否已存在。
this.root = null; // 根节点元素//---------- 载入函数 ----------- this.test = function() { // 检查参数
this.name = this.trim(this.name);
this.imageOfCloseFolder = this.trim(this.imageOfCloseFolder);
this.imageOfOpenFolder = this.trim(this.imageOfOpenFolder);
this.imageOfLeaf = this.trim(this.imageOfLeaf);
/*
if (this.name == "") {alert("树名不能为空"); return false;}
if (this.imageOfLeaf == "") { // 确保叶子图片文件非空;否则,不显示图标
if (this.imageOfOpenFolder == "") {
if (this.imageOfCloseFolder == "") {this.showIcon = false;}
else {this.imageOfLeaf = this.imageOfCloseFolder;}
}
else {this.imageOfLeaf = this.imageOfOpenFolder;}
}
if (this.showIcon) { // 此时,或者不显示图标,或者叶子图片文件非空
if (this.imageOfOpenFolder == "") {this.imageOfOpenFolder = this.imageOfLeaf;}
if (this.imageOfCloseFolder == "") {this.imageOfCloseFolder = this.imageOfOpenFolder;}
if (this.imageOfOpenFolder == "") {this.imageOfOpenFolder = this.imageOfCloseFolder;}
}
*/
return true;
}
this.hit = function(obj) { // 点击节点后进行的动作
if (this.currentNode != null) { // 去掉原当前节点的高亮显示
this.currentNode.node_row.style.color = this.generalColor;
this.currentNode.node_row.style.backgroundColor = this.generalBgColor;
this.currentNode.node_text.style.color = this.generalColor;
}
obj.node_row.style.color = this.currentColor; // 此3句是:高亮显示当前节点
obj.node_row.style.backgroundColor = this.currentBgColor;
obj.node_text.style.color = this.currentColor;
this.currentNode = obj;
if (this.hitClear) {this.resetCheckBox(false);} // 取消所有检查盒的选中
if (this.hitFunctionName != "") { // 根据需要,对点击动作做进一步的处理
eval(this.hitFunctionName + "('" + obj.node_name + "','" + obj.node_parameters + "')");
}
}
this.resetCheckBox = function(isChoose) { // 将所有节点的检查盒属性重置为指定值(isChoose)
this.root.resetCheckBox(isChoose);
}
this.findNode = function(nName) { // 寻找指定名的节点
return this.root.findNode(nName);
}
this.getImgTag = function(imgName, imgID, altText) {
if (imgName == null) {imgName = "";}
else {imgName = this.trim(imgName);}
if (altText == null) {altText = "";}
else {altText = this.trim(altText);}
if (imgID == null) {imgID = "";}
var ss = "";
if (imgName == "") {
ss = "<span" + (imgID==""?"":" id='"+imgID+"'") + " style='text-decoration:none;color:"+this.generalColor+"'>" + altText + "</span>";
}
else {ss = "<IMG ALIGN=absmiddle BORDER=0" + (imgID==""?"":" id='"+imgID+"'") + " alt='" + altText + "'"
+ " SRC='" + this.imageDirectory + imgName + "'>";
}
return ss;
}
解决方案 »
- js 如何截取字符串
- 如何通过javascript在两个页面之间传值
- javascript语法的一个问题
- JS中为什么\t不起作用
- 吐槽:感觉javascript是反人类的语言的请进
- jquery和jqueryUI的API文档只能在线看,公司上网麻烦,所以想找一份最新版的且比较好的文档,不知能不能提供一些资源
- 一个比较复杂的JAVASCRIP.!!大家帮忙谢谢!!!!!(很急在线等待)
- 关于javascript 的Frame问题
- 怎么实现从不同页的text之间实现复制和粘贴。
- 关闭窗口需要有提示窗口,但跳转页面不要有提示
- 利用网站做一个进销存系统!遇到一点小问题.
- 关于window.open的问题
if (wObj == null) {
var attrString = "top=0,left=10,width=800,height=500,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes";
wObj = window.open("", "", attrString);
}
with (wObj.document) {
open("text/html");
writeln("<HTML>");
writeln("<HEAD>");
writeln("<title>说明</title>");
writeln("<style>");
writeln("<!--");
writeln("td {font-face:宋体;font-size:12px;line-height:12px;letter-spacing:0px;margin-top:0px;}");
writeln(".tit {COLOR:#ffffff;backGround-color:#999933;font-face:宋体;font-size:12px;text-align:center;font-weight:bold}");
writeln("-->");
writeln("</style>");
writeln("</HEAD>");
writeln("<BODY topmargin='0' leftmargin='0' marginheight='0' marginwidth='0'>");
writeln("<table border='1' cellpadding='3' cellspacing='0'>");
writeln("<tr><td colspan=3 class=tit>建立目录树的方法</td></tr>");
writeln("<tr><td nowrap><b>1、var myTree = Tree(treeName);</b></td><td colspan=2>首先建立一个目录树处理对象</td></tr>");
writeln("<tr><td></td><td colspan=2>其中,treeName是赋予该对象的名。以便此后可通过“document.treeName”来调用之。</td></tr>");
writeln("<tr><td align=right>它有如下可配置的属性:</td><td>showIcon = true;</td><td>是否要画各节点前的图标</td></tr>");
writeln("<tr><td></td><td>showRoot = true;</td><td>是否要显示根节点</td></tr>");
writeln("<tr><td></td><td>hitClear = true;</td><td>点击节点后,是否全不选所有检查盒</td></tr>");
writeln("<tr><td></td><td>chooseMode = 2;</td><td>选择了某节点后的处理方式:0,无动作;1:同时选中第1层子节点;2:同时选中所有子节点</td></tr>");
writeln("<tr><td></td><td>hitFunctionName = 'hitHandle';</td><td>点击节点后的动作函数</td></tr>");
writeln("<tr><td></td><td>getSonFunctionName = 'getSonNode';</td><td>展开时如无子节点,则将调用的函数</td></tr>");
writeln("<tr><td></td><td>generalColor = '#000000';</td><td>普通节点的颜色</td></tr>");
writeln("<tr><td></td><td>currentColor = '#000000';</td><td>当前节点的颜色</td></tr>");
writeln("<tr><td></td><td>generalBgColor = '#EEF7FF';</td><td>普通节点的底色</td></tr>");
writeln("<tr><td></td><td>currentBgColor = '#a0a0a0';</td><td>当前节点的底色</td></tr>");
writeln("<tr><td></td><td>imageDirectory = 'treeImages/'; </td><td>图符文件目录</td></tr>");
writeln("<tr><td></td><td>imageOfVertLine = 'img_vert_line.gif';</td><td>形如“┃”的垂直连线</td></tr>");
writeln("<tr><td></td><td nowrap>imageOfConCloseFolder = 'img_plus_cont.gif';</td><td>收拢之文件夹节点的、形如“┣”的加形图符</td></tr>");
writeln("<tr><td></td><td>imageOfEndCloseFolder = 'img_plus_end.gif';</td><td>收拢之终结文件夹节点的、形如“┗”的加形图符</td></tr>");
writeln("<tr><td></td><td>imageOfConOpenFolder = 'img_minus_cont.gif';</td><td>展开之文件夹节点的、形如“┣”的减形图符</td></tr>");
writeln("<tr><td></td><td>imageOfEndOpenFolder = 'img_minus_end.gif';</td><td>展开之终结文件夹节点的、形如“┗”的减形图符</td></tr>");
writeln("<tr><td></td><td>imageOfConLeaf = 'img_branch_cont.gif';</td><td>叶子节点的、形如“┣”的连线图符</td></tr>");
writeln("<tr><td></td><td>imageOfEndLeaf = 'img_branch_end.gif';</td><td>终结叶子节点的、形如“┗”的连线图符</td></tr>");
writeln("<tr><td></td><td>imageOfLeaf = 'img_leaf.gif';</td><td>叶子节点图标</td></tr>");
writeln("<tr><td></td><td>imageOfOpenFolder = 'img_folder_open.gif';</td><td>展开的文件夹节点图标</td></tr>");
writeln("<tr><td></td><td>imageOfCloseFolder = 'img_folder_close.gif';</td><td>收拢的文件夹节点图标</td></tr>");
writeln("<tr><td align=right>及只读属性:</td><td>currentNode</td><td>最近一次点击的节点。</td></tr>");
writeln("<tr><td></td><td>rootExist</td><td>根节点是否已存在。</td></tr>");
writeln("<tr><td></td><td>root</td><td>根节点元素</td></tr>");
writeln("<tr><td align=right>它有如下方法:</td><td>trim(String)</td><td>去尾部空格</td></tr>");
writeln("<tr><td></td><td>hit(node)</td><td>点击后,高亮显示当前节点,并调用用户自定义的hitFunctionName函数</td></tr>");
writeln("<tr><td></td><td>findNode(nodeName)</td><td>寻找指定名的节点</td></tr>");
writeln("<tr><td></td><td>drawRoot(......)</td><td>画根节点</td></tr>");
writeln("<tr><td></td><td>addNode(......)</td><td>插入节点</td></tr>");
writeln("<tr><td></td><td>help(wObj)</td><td>在wObj窗口(缺省:在新窗口)显示帮助页面</td></tr>");
writeln("<tr><td><b>2、建立hitHandle函数</b></td><td colspan=2>如果hitFunctionName属性有值,则别忘了建立该函数。该函数的参数总是(节点名,节点自带的属性串)</td></tr>");
writeln("<tr><td><b>3、建立getSonFunctionName函数</b></td><td colspan=2>如果getSonFunctionName属性有值,则别忘了建立该函数。该函数的参数总是(节点名,节点自带的属性串)</td></tr>");
writeln("<tr><td><b>4、画根节点:myTree.drawRoot();</b></td><td>其参数按顺序如下:</td><td>根节点的名</td></tr>");
writeln("<tr><td></td><td></td><td>根节点的自带属性串</td></tr>");
writeln("<tr><td></td><td></td><td>根节点的图标文件名</td></tr>");
writeln("<tr><td></td><td></td><td>根节点是否有检查盒(缺省:无)</td></tr>");
writeln("<tr><td></td><td></td><td>该检查盒是否不可用(缺省:可用)</td></tr>");
writeln("<tr><td></td><td></td><td>放置目录树的目标元素。空:则document.write;否则putObj.innerHTML=</td></tr>");
writeln("<tr><td><b>5、加入节点:myTree.addNode();</b></td><td>其参数按顺序如下:</td><td>父节点的名(缺省是根节点)</td></tr>");
writeln("<tr><td></td><td></td><td>本节点的名</td></tr>");
writeln("<tr><td></td><td></td><td>本节点的显示文字</td></tr>");
writeln("<tr><td></td><td></td><td>本节点的自带属性串</td></tr>");
writeln("<tr><td></td><td></td><td>本节点状态。0——叶子;1——收拢文件夹;2——展开文件夹</td></tr>");
writeln("<tr><td></td><td></td><td>本节点是否有检查盒(缺省:无)</td></tr>");
writeln("<tr><td></td><td></td><td>该检查盒是否不可用(缺省:可用)</td></tr>");
writeln("<tr><td><b>6、节点的属性和方法:</b></td><td></td><td></td></tr>");
writeln("<tr><td align=right>各节点主要有如下属性:</td><td>node_name</td><td>本节点的名</td></tr>");
writeln("<tr><td></td><td>node_parameters</td><td>本节点的自带属性串</td></tr>");
writeln("<tr><td></td><td>node_status</td><td>本节点的状态</td></tr>");
writeln("<tr><td></td><td>node_isLast</td><td>本节点是否是本层的最后一个节点</td></tr>");
writeln("<tr><td></td><td>node_chkbox</td><td>本节点的检查盒元素</td></tr>");
writeln("<tr><td></td><td>node_icon</td><td>本节点的图标元素</td></tr>");
writeln("<tr><td></td><td>node_row</td><td>本节点的所在行元素</td></tr>");
writeln("<tr><td></td><td>node_text</td><td>本节点的显示文字元素</td></tr>");
writeln("<tr><td></td><td>node_expandElement</td><td>本节点的子目录展开元素</td></tr>");
writeln("<tr><td></td><td>node_son</td><td>本节点的子节点表</td></tr>");
writeln("<tr><td></td><td>node_sonNodes</td><td>本节点的所有子节点</td></tr>");
writeln("<tr><td align=right>各节点有如下方法:</td><td>resetCheckBox(isChoose)</td><td>将本节点及其下属的检查盒属性重置为指定值(isChoose)</td></tr>");
writeln("<tr><td></td><td>findNode(nodeName)</td><td>在本节点及其下属子节点中寻找指定名的节点</td></tr>");
writeln("<tr><td></td><td>collapseOrExpand()</td><td>收拢或展开</td></tr>");
writeln("</TABLE>");
writeln("</BODY></HTML>");
close();
}
wObj.focus();
}