如何实现建立动态的目录结构? http://www.chinaok.net/Examples/看中哪个下载哪个.......... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我最近也刚做完这个东西,你可以看看上面的那个网址的代码也可以看看下面这个网站的风格,应该是你想要的吧http://www.trade-ok.com/cobe/yycnet/index.asp我对这个做了一些改进,比他这个还要完强大,代码也更多一些,数据表的设计无非是做一些关联就可以了呀,只要你明白了实现方法做起来也就简单了 谢谢,我知道一般设置节点用3个字段,ID,FID,FName我以前见过用编码来表示节点的,现在忘记了怎么做的。不知道你们通常是怎么表示的如果使用xml从数据库中提取数据,象msdn里一样,是如何实现的 其实他的原理非常简单,在你要显示树的而面里面加上一个隐藏的IFRAME,就是说他的宽高都为零,最初显示的时候只显示第一层结点,点击这个节点的时候提交一个数据到这个IFRAME里面得到这个节点的子节点,按表格的形式显示出来,然后把产生的代码给做为父节点的一个层就可以实现了,原理就是这样,我给你点代码吧你看看 <BODY BGCOLOR="FFFFFF" ID="body" background="../../images/bak.gif"><FONT FACE="Verdana" SIZE="2" >共享文件</FONT><table class="titletable" border=0 cellpadding="0" cellspacing="0" width="100%"><tr><td width="2" colspan=2><img src="images/subLineIcon.gif" align="absmiddle" border=0></td></tr><tr><td><img name="sub" <cfif PubFoldList.RecordCount neq 0>id=SubSh00 onclick="showNode('shDiv0$0','0','public','0','shfo00',this,'shSpan00')" isLastNode="0"</cfif> src="images/<cfif PubFoldList.RecordCount neq 0>subLineOpen.gif<cfelse>entryLine.gif</cfif>" border=0 align="absmiddle"></td><td width=98%><img <cfif PubFoldList.RecordCount eq 0>onclick="FileList('shDiv0$0','0','0','public',this,'shSpan00')"</cfif> src="images/folder.gif" align="absmiddle" border="0" id=shfo00><span id=shSpan00 style="cursor:hand" <cfif PubFoldList.RecordCount neq 0>onclick="SubSh00.onclick()"<cfelse>onclick="shfo00.onclick()"</cfif>>公共文件夹</span></td></tr><tr><td colspan="2"><div id=shDiv0$0 style="display:none" align="left"><img src="images/entryLine.gif" border=0 align="absmiddle">载入数据......</div></td></tr><tr><td><img name="sub" <cfif PerFoldList.RecordCount neq 0>id=SubPe00 onclick="showNode('peDiv0$0','0','personal','0','pefo00',this,'peSpan00')" isLastNode="1"</cfif> src="images/<cfif PerFoldList.RecordCount neq 0>subLineOpenLast.gif<cfelse>entryLineLast.gif</cfif>" border=0 align="absmiddle"></td><td><img <cfif PerFoldList.RecordCount eq 0>onclick="FileList('peDiv0$0','0','0','personal',this,'peSpan00')"</cfif> src="images/folder.gif" align="absmiddle" border="0" id=pefo00><span id=peSpan00 style="cursor:hand" <cfif PerFoldList.RecordCount neq 0>onclick="SubPe00.onclick()"<cfelse>onclick="pefo00.onclick()"</cfif>>私人文件夹</span></td></tr><tr><td colspan=2 ><div id=peDiv0$0 style="display:none" ><span>载入数据......</span></div></td></tr></table><br><br><iframe height="0" width="0" src="gettree.cfm" id=gettree name=gettree></iframe></BODY>注意我下面用的IFRAME就是这个原理 前几天别人给我的程序mytree.js/** * 目录树 * @author * Name: browncoder * E_mail: [email protected] * @version 1.0*///~~/** * 使用方法: 1.生成一个新的树对象 var tree = new tree(); 2.生成一个新的根对象 var root = new root(1,"根目录","#",""); 3.为树对象添加根对象 tree.addRoot(root); 4.为树对象添加节点,节点的顺序应该按id先后来排列 5.画出根对象 tree.drawRoot(); 6.画出整个树 tree.drawNodes(tree.root); 例子:/*******************************************设置公共的图片变量开始**************************************************//** 图片所在目录 *///~~ imageDir = "../images";/** 文件节点的图片 *///~~ img_file = imageDir+"/file.gif";/** 关闭的目录的图片 *///~~ img_folder_close = imageDir+"/close.gif";/** 在中间的加号的图片 *///~~ img_plus = imageDir+"/plusnode.gif";/** 在树末尾的加号的图片 *///~~ img_plus_last = imageDir+"/pluslastnode.gif";/** 打开的目录的图片 *///~~ img_folder_open = imageDir+"/open.gif";/** 在树末尾的减号的图片 *///~~ img_minus_last = imageDir+"/minuslastnode.gif";/** 在中间的减号的图片 *///~~ img_minus = imageDir+"/minusnode.gif";/** 无节点线条的图片 *///~~ img_line = imageDir+"/line.gif";/** 最后节点的线条图片 *///~~ img_line_last = imageDir+"/lastnode.gif";/** 中间节点的线条图片 *///~~ img_line_mid = imageDir+"/node.gif";/** 空白区域的图片 *///~~ img_blank = imageDir+"/blank.gif";/*******************************************设置公共的图片变量结束**************************************************/function tree() {/** 根节点 *///~~ this.root = null;/** 节点个数 *///~~ this.length = 0;/** 节点数组 *///~~ this.nodes = new Array();/** 在drawFrontLine时用来临时存储字符串 *///~~// this.tempStr = "";/** 添加根节点 *///~~ this.addRoot = addRoot;/** 添加节点 *///~~ this.addNode = addNode;/** 画出根节点 *///~~ this.drawRoot = drawRoot;/** 画出节点前的空白图片或连接线图片 *///~~ this.drawFrontLine = drawFrontLine;/** 画出节点 *///~~ this.drawNode = drawNode;/** 画出所有节点 *///~~ this.drawNodes = drawNodes;/** 得到节点的父节点 *///~~ this.getParent = getParent;/** 添加节点时,将同一层的其他节点的isLast属性设置为false *///~~ this.setOtherIsLast = setOtherIsLast;}/** * 根节点对象 * @param id 根节点的id号 * @param name 根节点名称,显示在页面的连接的名字 * @param url 链接 * @param target 指示链接的目标页面*/function root(id,name,url,target) { this.id = id; this.name = name; this.parentId = null; this.type = "root"; this.url = url; this.target = target;}function addRoot(root) { this.root = root; this.length = 1; this.nodes[0] = root;}/** * 节点对象 * @param id 节点id号 * @param name 节点名称,显示在页面上的链接的名字 * @param parentId 父节点id号 * @param type 节点的类型(folder|file) * @param url 节点的链接 * @param target 节点链接的目标页面*///~~function node(id,name,parentId,type,url,target) { /** 节点id号 *///~~ this.id = id; /** 节点名称,显示在页面上的链接的名字 *///~~ this.name =name; /** 父节点id号 *///~~ this.parentId = parentId; /** 节点的类型(folder|file) *///~~ this.type = type; /** 节点的链接 *///~~ this.url = url; /** 节点链接的目标页面 *///~~ this.target = target; /** 节点的图片(目录或文件等) *///~~ this.image = ""; /** 节点的前导图片(加号或减号或线条等) *///~~ this.fImage = ""; /** 是否是同层中最后节点 *///~~ this.isLast = false;}/** 判断一个节点是否有父节点,如果有则返回其父节点,如果没有返回null */function getParent(node) { for (var i=0;i<this.length;i++) { if (this.nodes[i].id == node.parentId) { return this.nodes[i]; } } return null;}/** 当添加一个新节点后,将与它处在同一层的其它元素的isLast标志设置为false */function setOtherIsLast(node) { for (var i=1;i<this.length;i++) //i=1,表示不包括根节点在内的循环 { if (this.nodes[i].parentId == node.parentId && this.nodes[i].isLast) //如果找到父节点相同的,并且isLast为true的节点 { this.nodes[i].isLast = false; //设置该节点的isLast为false if (this.nodes[i].type == "folder") //设置图片为非末节点图片 { this.nodes[i].fImage = img_plus; } else { this.nodes[i].fImage = img_line_mid; } return true; } } return false;}/** 为树的节点组nodes[]添加一个新的节点 */function addNode(node) { if (this.getParent(node) != null) //如果有父节点 { this.setOtherIsLast(node); //设置同层中的其他元素为非末节点 node.isLast = true; //设置本节点为末节点 if (node.type == "folder") //根据节点类型设置图片 { node.image = img_folder_close; node.fImage = img_plus_last; } else { node.image = img_file; node.fImage = img_line_last; } this.nodes[this.length] = node; //添加该节点到树的节点组nodes[] this.length++; //节点数加1 } else { alert("没有找到该节点的父节点,这是一个非法节点!"); }}/** 画出根节点 */function drawRoot() { document.write("<table border='0' cellspacing='0' cellpadding='0'>"); document.write("<tr style='font-size:12px'><td>"); document.write("<a onFocus='this.blur()' href='"+this.root.url+"' target='"+this.root.target+"'><img border='0' src='"+img_folder_close+"'></a>"); document.write("</td><td valign='middle'>"); document.write("<a onFocus='this.blur()' href='"+this.root.url+"' target='"+this.root.target+"'>"+this.root.name+"</a>"); document.write("</td></tr>"); document.write("</table>");}/** 画出节点 */function drawNode(node) { document.write("<table border='0' cellspacing='0' cellpadding='0'>"); document.write("<tr style='font-size:12px'><td>"); this.drawFrontLine(node); if (node.type == "folder") { document.write("<a onClick='clickOnFolder()' onFocus='this.blur()' href='#'><img border='0' src='"+node.fImage+"'></a>"); document.write("<a onFocus='this.blur()' href='"+node.url+"' target='"+node.target+"'><img border='0' src='"+node.image+"'></a>"); document.write("</td><td valign='middle'>"); document.write("<a onFocus='this.blur()' id='folderLink' href='"+node.url+"' target='"+node.target+"'>"+node.name+"</a>"); } else { document.write("<img border='0' src='"+node.fImage+"'>"); document.write("<a onFocus='this.blur()' href='"+node.url+"' target='"+node.target+"'><img border='0' src='"+node.image+"'></a>"); document.write("</td><td valign='middle'>"); document.write("<a onFocus='this.blur()' href='"+node.url+"' target='"+node.target+"'>"+node.name+"</a>"); } document.write("</td></tr>"); document.write("</table>");}/** 画出整个树的节点组 */function drawNodes(node) { if (node.type != "root") { document.write("<div style='display:none'>"); } for (var i=1;i<this.length;i++) { if (this.nodes[i].parentId!=null && this.nodes[i].parentId == node.id) { this.drawNode(this.nodes[i]); //画出节点 this.drawNodes(this.nodes[i]); //递归画出整个节点组的节点 } } if (node.type != "root") { document.write("</div>"); }}/** 画出节点前的前导图片,有空格或线条图片. 如果其父节点是一个末节点,那么该对应列的前导图片为空格图片. 如果不是末节点,应该添加线条图片. 这里进行了递归运算,但由于其图片顺序为反顺序,所以设置一个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]); } } document.write(tempStr);}/** 当点击目录节点的前导"加号|减号"图片时,展开层或收缩层,并用相应的图片替代现有图片,实现动态收缩动作 */function clickOnFolder() { var srcIndex = event.srcElement.sourceIndex; var divElement = document.all[srcIndex+5]; //得到层对象 var imgElement = document.all[srcIndex+2]; //得到图片对象 var fimgElement = document.al mytree.jsp<HTML><HEAD><TITLE> New Document </TITLE><script src="../js/mytree.js"></script></HEAD><body bgcolor="#3EA4FF" text="#000000"><script type="text/javascript">var tree = new tree();var root = new root(0,"创建新组群","../creategroup/create_group.jsp","mainFrame");tree.addRoot(root);<% String unit=(String)session.getValue("unitnumber"); String level=(String)session.getValue("levelnumber"); String sql2="select groupno,groupname,lastgroupno from unitgroup where unitno="+unit+" and levelno="+level+" start with lastgroupno=0 connect by lastgroupno=prior groupno"; rs=sqlbean.executeQuery(conn,sql2); while(rs.next()) { String groupno=rs.getString("groupno"); String groupname=JqtCharsetConvert.OracleToGb2312(rs.getString("groupname")); String lastgroupno=rs.getString("lastgroupno"); %>tree.addNode(new node("<%=groupno%>",'"<%=groupname%>"',"<%=lastgroupno%>","folder","../viewgroup/view_group.jsp?groupno=<%=groupno%>","mainFrame"));<%}%>tree.drawRoot();tree.drawNodes(tree.root);//--> script end</script></body></html> http://lucky.myrice.com/foldertree/index.html 【js】求高手帮忙兼容此幻灯片火狐模式,高分! javascript有编辑器吗? 如何实现关闭所有IE窗口 jsp alert 变量的问题 如何实现这样的功能 js怎么获取前一天与后一天的年月日 meta http-equiv="Page-Enter" 为什么没有起作用?? 求救!~谢谢各位大哥 怎样判断是 数组 还是 对象 ??? JavaScript和session的问题,达人们来看看! ***winodw.toolbar.visible=true*** 这句话为什么不对呢?马上给分 如何用图表统计从数据库查询来的数据,比如用OFFICE图表组件?高手请指点
也可以看看下面这个网站的风格,应该是你想要的吧
http://www.trade-ok.com/cobe/yycnet/index.asp
我对这个做了一些改进,比他这个还要完强大,代码也更多一些,
数据表的设计无非是做一些关联就可以了呀,只要你明白了实现
方法做起来也就简单了
我以前见过用编码来表示节点的,现在忘记了怎么做的。
不知道你们通常是怎么表示的
如果使用xml从数据库中提取数据,象msdn里一样,是如何实现的
就是说他的宽高都为零,最初显示的时候只显示第一层结点,点击这个节点
的时候提交一个数据到这个IFRAME里面得到这个节点的子节点,按表格的形式
显示出来,然后把产生的代码给做为父节点的一个层就可以实现了,原理就是这样,我给你点代码吧你看看
<FONT FACE="Verdana" SIZE="2" >
共享文件</FONT>
<table class="titletable" border=0 cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="2" colspan=2>
<img src="images/subLineIcon.gif" align="absmiddle" border=0>
</td>
</tr>
<tr>
<td>
<img name="sub" <cfif PubFoldList.RecordCount neq 0>id=SubSh00 onclick="showNode('shDiv0$0','0','public','0','shfo00',this,'shSpan00')" isLastNode="0"</cfif> src="images/<cfif PubFoldList.RecordCount neq 0>subLineOpen.gif<cfelse>entryLine.gif</cfif>" border=0 align="absmiddle">
</td>
<td width=98%>
<img <cfif PubFoldList.RecordCount eq 0>onclick="FileList('shDiv0$0','0','0','public',this,'shSpan00')"</cfif> src="images/folder.gif" align="absmiddle" border="0" id=shfo00>
<span id=shSpan00 style="cursor:hand" <cfif PubFoldList.RecordCount neq 0>onclick="SubSh00.onclick()"<cfelse>onclick="shfo00.onclick()"</cfif>>
公共文件夹</span>
</td>
</tr>
<tr>
<td colspan="2">
<div id=shDiv0$0 style="display:none" align="left">
<img src="images/entryLine.gif" border=0 align="absmiddle">载入数据......
</div>
</td>
</tr>
<tr>
<td>
<img name="sub" <cfif PerFoldList.RecordCount neq 0>id=SubPe00 onclick="showNode('peDiv0$0','0','personal','0','pefo00',this,'peSpan00')" isLastNode="1"</cfif> src="images/<cfif PerFoldList.RecordCount neq 0>subLineOpenLast.gif<cfelse>entryLineLast.gif</cfif>" border=0 align="absmiddle">
</td>
<td>
<img <cfif PerFoldList.RecordCount eq 0>onclick="FileList('peDiv0$0','0','0','personal',this,'peSpan00')"</cfif> src="images/folder.gif" align="absmiddle" border="0" id=pefo00>
<span id=peSpan00 style="cursor:hand" <cfif PerFoldList.RecordCount neq 0>onclick="SubPe00.onclick()"<cfelse>onclick="pefo00.onclick()"</cfif>>
私人文件夹</span>
</td>
</tr>
<tr>
<td colspan=2 >
<div id=peDiv0$0 style="display:none" ><span>载入数据......</span></div>
</td>
</tr>
</table>
<br><br>
<iframe height="0" width="0" src="gettree.cfm" id=gettree name=gettree></iframe>
</BODY>
注意我下面用的IFRAME就是这个原理
/**
* 目录树
* @author
* Name: browncoder
* E_mail: [email protected]
* @version 1.0
*///~~/**
* 使用方法:
1.生成一个新的树对象 var tree = new tree();
2.生成一个新的根对象 var root = new root(1,"根目录","#","");
3.为树对象添加根对象 tree.addRoot(root);
4.为树对象添加节点,节点的顺序应该按id先后来排列
5.画出根对象 tree.drawRoot();
6.画出整个树 tree.drawNodes(tree.root);
例子:/*******************************************设置公共的图片变量开始**************************************************//** 图片所在目录 *///~~
imageDir = "../images";
/** 文件节点的图片 *///~~
img_file = imageDir+"/file.gif";
/** 关闭的目录的图片 *///~~
img_folder_close = imageDir+"/close.gif";
/** 在中间的加号的图片 *///~~
img_plus = imageDir+"/plusnode.gif";
/** 在树末尾的加号的图片 *///~~
img_plus_last = imageDir+"/pluslastnode.gif";
/** 打开的目录的图片 *///~~
img_folder_open = imageDir+"/open.gif";
/** 在树末尾的减号的图片 *///~~
img_minus_last = imageDir+"/minuslastnode.gif";
/** 在中间的减号的图片 *///~~
img_minus = imageDir+"/minusnode.gif";
/** 无节点线条的图片 *///~~
img_line = imageDir+"/line.gif";
/** 最后节点的线条图片 *///~~
img_line_last = imageDir+"/lastnode.gif";
/** 中间节点的线条图片 *///~~
img_line_mid = imageDir+"/node.gif";
/** 空白区域的图片 *///~~
img_blank = imageDir+"/blank.gif";
/*******************************************设置公共的图片变量结束**************************************************/function tree() {/** 根节点 *///~~
this.root = null;
/** 节点个数 *///~~
this.length = 0;
/** 节点数组 *///~~
this.nodes = new Array();
/** 在drawFrontLine时用来临时存储字符串 *///~~
// this.tempStr = "";/** 添加根节点 *///~~
this.addRoot = addRoot;
/** 添加节点 *///~~
this.addNode = addNode;/** 画出根节点 *///~~
this.drawRoot = drawRoot;
/** 画出节点前的空白图片或连接线图片 *///~~
this.drawFrontLine = drawFrontLine;
/** 画出节点 *///~~
this.drawNode = drawNode;
/** 画出所有节点 *///~~
this.drawNodes = drawNodes;
/** 得到节点的父节点 *///~~
this.getParent = getParent;
/** 添加节点时,将同一层的其他节点的isLast属性设置为false *///~~
this.setOtherIsLast = setOtherIsLast;
}/**
* 根节点对象
* @param id 根节点的id号
* @param name 根节点名称,显示在页面的连接的名字
* @param url 链接
* @param target 指示链接的目标页面
*/
function root(id,name,url,target) {
this.id = id;
this.name = name;
this.parentId = null;
this.type = "root";
this.url = url;
this.target = target;
}function addRoot(root) {
this.root = root;
this.length = 1;
this.nodes[0] = root;
}/**
* 节点对象
* @param id 节点id号
* @param name 节点名称,显示在页面上的链接的名字
* @param parentId 父节点id号
* @param type 节点的类型(folder|file)
* @param url 节点的链接
* @param target 节点链接的目标页面
*///~~function node(id,name,parentId,type,url,target) {
/** 节点id号 *///~~
this.id = id;
/** 节点名称,显示在页面上的链接的名字 *///~~
this.name =name;
/** 父节点id号 *///~~
this.parentId = parentId;
/** 节点的类型(folder|file) *///~~
this.type = type;
/** 节点的链接 *///~~
this.url = url;
/** 节点链接的目标页面 *///~~
this.target = target;
/** 节点的图片(目录或文件等) *///~~
this.image = "";
/** 节点的前导图片(加号或减号或线条等) *///~~
this.fImage = "";
/** 是否是同层中最后节点 *///~~
this.isLast = false;
}/** 判断一个节点是否有父节点,如果有则返回其父节点,如果没有返回null */
function getParent(node) {
for (var i=0;i<this.length;i++)
{
if (this.nodes[i].id == node.parentId)
{
return this.nodes[i];
}
}
return null;
}/** 当添加一个新节点后,将与它处在同一层的其它元素的isLast标志设置为false */
function setOtherIsLast(node) {
for (var i=1;i<this.length;i++) //i=1,表示不包括根节点在内的循环
{
if (this.nodes[i].parentId == node.parentId && this.nodes[i].isLast) //如果找到父节点相同的,并且isLast为true的节点
{
this.nodes[i].isLast = false; //设置该节点的isLast为false
if (this.nodes[i].type == "folder") //设置图片为非末节点图片
{
this.nodes[i].fImage = img_plus;
} else {
this.nodes[i].fImage = img_line_mid;
}
return true;
}
}
return false;
}/** 为树的节点组nodes[]添加一个新的节点 */
function addNode(node) {
if (this.getParent(node) != null) //如果有父节点
{
this.setOtherIsLast(node); //设置同层中的其他元素为非末节点
node.isLast = true; //设置本节点为末节点
if (node.type == "folder") //根据节点类型设置图片
{
node.image = img_folder_close;
node.fImage = img_plus_last;
} else {
node.image = img_file;
node.fImage = img_line_last;
}
this.nodes[this.length] = node; //添加该节点到树的节点组nodes[]
this.length++; //节点数加1
} else {
alert("没有找到该节点的父节点,这是一个非法节点!");
}
}
/** 画出根节点 */
function drawRoot() {
document.write("<table border='0' cellspacing='0' cellpadding='0'>");
document.write("<tr style='font-size:12px'><td>");
document.write("<a onFocus='this.blur()' href='"+this.root.url+"' target='"+this.root.target+"'><img border='0' src='"+img_folder_close+"'></a>");
document.write("</td><td valign='middle'>");
document.write("<a onFocus='this.blur()' href='"+this.root.url+"' target='"+this.root.target+"'>"+this.root.name+"</a>");
document.write("</td></tr>");
document.write("</table>");
}/** 画出节点 */
function drawNode(node) {
document.write("<table border='0' cellspacing='0' cellpadding='0'>");
document.write("<tr style='font-size:12px'><td>");
this.drawFrontLine(node);
if (node.type == "folder")
{
document.write("<a onClick='clickOnFolder()' onFocus='this.blur()' href='#'><img border='0' src='"+node.fImage+"'></a>");
document.write("<a onFocus='this.blur()' href='"+node.url+"' target='"+node.target+"'><img border='0' src='"+node.image+"'></a>");
document.write("</td><td valign='middle'>");
document.write("<a onFocus='this.blur()' id='folderLink' href='"+node.url+"' target='"+node.target+"'>"+node.name+"</a>");
} else {
document.write("<img border='0' src='"+node.fImage+"'>");
document.write("<a onFocus='this.blur()' href='"+node.url+"' target='"+node.target+"'><img border='0' src='"+node.image+"'></a>");
document.write("</td><td valign='middle'>");
document.write("<a onFocus='this.blur()' href='"+node.url+"' target='"+node.target+"'>"+node.name+"</a>");
}
document.write("</td></tr>");
document.write("</table>");
}/** 画出整个树的节点组 */
function drawNodes(node) {
if (node.type != "root")
{
document.write("<div style='display:none'>");
}
for (var i=1;i<this.length;i++)
{
if (this.nodes[i].parentId!=null && this.nodes[i].parentId == node.id)
{
this.drawNode(this.nodes[i]); //画出节点
this.drawNodes(this.nodes[i]); //递归画出整个节点组的节点
}
}
if (node.type != "root")
{
document.write("</div>");
}
}/** 画出节点前的前导图片,有空格或线条图片.
如果其父节点是一个末节点,那么该对应列的前导图片为空格图片.
如果不是末节点,应该添加线条图片.
这里进行了递归运算,但由于其图片顺序为反顺序,所以设置一个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]);
}
}
document.write(tempStr);
}
/** 当点击目录节点的前导"加号|减号"图片时,展开层或收缩层,并用相应的图片替代现有图片,实现动态收缩动作 */
function clickOnFolder() {
var srcIndex = event.srcElement.sourceIndex;
var divElement = document.all[srcIndex+5]; //得到层对象
var imgElement = document.all[srcIndex+2]; //得到图片对象
var fimgElement = document.al
<HEAD>
<TITLE> New Document </TITLE>
<script src="../js/mytree.js"></script>
</HEAD><body bgcolor="#3EA4FF" text="#000000"><script type="text/javascript">var tree = new tree();
var root = new root(0,"创建新组群","../creategroup/create_group.jsp","mainFrame");
tree.addRoot(root);<%
String unit=(String)session.getValue("unitnumber");
String level=(String)session.getValue("levelnumber"); String sql2="select groupno,groupname,lastgroupno from unitgroup where unitno="+unit+" and levelno="+level+" start with lastgroupno=0 connect by lastgroupno=prior groupno";
rs=sqlbean.executeQuery(conn,sql2);
while(rs.next())
{ String groupno=rs.getString("groupno");
String groupname=JqtCharsetConvert.OracleToGb2312(rs.getString("groupname"));
String lastgroupno=rs.getString("lastgroupno");
%>tree.addNode(new node("<%=groupno%>",'"<%=groupname%>"',"<%=lastgroupno%>","folder","../viewgroup/view_group.jsp?groupno=<%=groupno%>","mainFrame"));<%}%>tree.drawRoot();
tree.drawNodes(tree.root);
//--> script end
</script>
</body>
</html>