社区
JavaScript
帖子详情
net_lover(孟子E章) 麻烦进一下
Iamdemon88
2004-01-11 10:46:06
树形目录问题
在你的树里面http://xml.sz.luohuedu.net/xml/foldertree/foldertree.htm
我加一个节点
tree.addNode(new node(20,"文件aaaa2",6,"file","#",""));对了
但要是tree.addNode(new node(20,"文件aaaa2",12,"file","#",""));
就不对了,明明有12这个父节点啊
这是为什么啊?
...全文
51
6
打赏
收藏
net_lover(孟子E章) 麻烦进一下
树形目录问题 在你的树里面http://xml.sz.luohuedu.net/xml/foldertree/foldertree.htm 我加一个节点 tree.addNode(new node(20,"文件aaaa2",6,"file","#",""));对了 但要是tree.addNode(new node(20,"文件aaaa2",12,"file","#","")); 就不对了,明明有12这个父节点啊 这是为什么啊?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
loveweb
2004-01-11
打赏
举报
回复
晕少了个字
是
要不你回复不了了
loveweb
2004-01-11
打赏
举报
回复
帮顶
要不你回复了
呵呵
Iamdemon88
2004-01-11
打赏
举报
回复
/** 画出节点 */
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.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;
}
}
}
</script>
</HEAD>
<BODY>
<script type="text/javascript">
var tree = new tree();
var root = new root(1,"根目录","#","");
tree.addRoot(root);
tree.addNode(new node(2,"a",1,"folder","#",""));
tree.addNode(new node(4,"aa",2,"folder","#",""));
tree.addNode(new node(6,"aaa1",4,"folder","#",""));
tree.addNode(new node(7,"b",1,"folder","#",""));
tree.addNode(new node(8,"c",1,"folder","#",""));
tree.addNode(new node(9,"cc",8,"folder","#",""));
tree.addNode(new node(10,"文件ccc1",9,"file","#",""));
tree.addNode(new node(11,"文件aaaa1",6,"file","#",""));
tree.addNode(new node(20,"文件aaaa2",12,"file","#",""));
tree.addNode(new node(12,"aaa2",4,"folder","#",""));
tree.addNode(new node(13,"文件ccc2",9,"file","#",""));
tree.addNode(new node(14,"文件bb",7,"file","#",""));
tree.addNode(new node(15,"文件cc",8,"file","#",""));
tree.addNode(new node(16,"文件aaa",4,"file","#",""));
tree.addNode(new node(17,"文件aa",2,"file","#",""));
tree.addNode(new node(18,"文件d",1,"file","#",""));
tree.addNode(new node(19,"文件ccc3",9,"file","#",""));
tree.drawRoot();
tree.drawNodes(tree.root);
</script>
</BODY>
</HTML>
Iamdemon88
2004-01-11
打赏
举报
回复
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script>
imageDir = "";
/** 文件节点的图片 */
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>");
}
Iamdemon88
2004-01-11
打赏
举报
回复
我没改你的函数
就只加一个节点
孟子E章
2004-01-11
打赏
举报
回复
得看你得全部代码
showModalDialog()、showModelessDialog()方法使用详解(net_
lover
)
孟子
E
章
" ) var mxh2 = window.open( " about:blank " , " window_mxh " ) // 向对话框传递数组 window.showModalDialog( " test2.htm " ,mxh1) // 向对话框传递window对象 window....
CSS样式丢失总结(转载)
转载自【
孟子
E
章
】:http://blog.csdn.net/net_
lover
/archive/2007/08/27/1760521.aspx经常有人遇到ASP.NET 2.0(ASP.NET 1.x中可能是有效的)中CSS失效的问题,现将主要原因和解决方法罗列如下:1.CSS文件路径不...
[转]Asp.net 2.0页面样式丢失总结
转载自【
孟子
E
章
】:http://blog.csdn.net/net_
lover
/archive/2007/08/27/1760521.aspx 经常有人遇到ASP.NET 2.0(ASP.NET 1.x中可能是有效的)中CSS失效的问题,现将主要原因和解决方法罗列如下:1.CSS文件路径不...
XML自动缩
进
输出
网上见的多的是
孟子
E
章
BLOG上的XSLT方法(他的blog宣传不错,名气大嘛)网址: http://blog.csdn.net/net_
lover
/archive/2004/07/27/53601.aspx文
章
: 利用xslt对xml
进
行缩
进
格式化处理 该方法可以解决问题,但是,...
利用XSLT把ADO记录集转换成XML
由于XML(可扩展标记语言:eXtensible Markup ...例如:“
孟子
E
章
1757281793923net_
lover
1807581793923”这组数据,从字面很难看出它代表什么意思,也不清楚它有几个数据段组成,但是,如果用XML来做如下的描述,
JavaScript
87,997
社区成员
224,709
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章