JS树形控件DTree

原文:https://www.cnblogs.com/zkwarrior/p/5134713.html

http://www.lmwlove.com/ac/ID868

在学习文章之前,要学会看官方网站http://destroydrop.com/javascripts/tree。从官方页面你能知道:dtree是什么、它的特性、它的源代码、它的帮助文档以及它的版本历史等等

常用方法
add(parameters):添加节点信息

IndexNameTypeDiscription
1idNumber当前节点的ID
2preIdNumber当前节点的父节点ID,根节点的值为 -1 
3nameString当前节点要显示的文字 
4urlString点击当前节点跳转到的URL
5titleString鼠标移至该节点时节点显示的标题提示
6targetString节点链接所打开的目标frame
7iconString节点显示的图标,无设置则使用默认图标
8iconOpenString打开该节点后显示的图标,无设置则使用默认图标
9openBoolean指定当前节点是否打开


【例】mytree.add(1, 0, 'My node', 'node.html', 'node title', 'mainframe', 'img/musicfolder.gif');
【注】dtree.js文件中约87-113行是一些默认图片的路径,可以自己配置图片

openAll():打开所有节点,可在树被创建以前或以后调用
【例】mytree.openAll();

closeAll():关闭所有节点,可在树被创建以前或以后调用
【例】mytree.closeAll();

oAll(bool):打开或关闭所有节点参数为true则打开所有节点,false则关闭所有节点

isOpen(id):指定节点是否处于打开状态如果处于打开状态则返回true,反之false

openTo(parameters)打开指定节点可在树被创建以前或以后调用

IndexNameTypeDescription
1idNumber需要打开的节点的ID号
2selectBoolean判断节点是否被选择

o(index) 打开/关闭指定节点,如果节点处于关闭状态则打开,反之则关闭
openTo()方法体内调用的就是o()方法

OPENTO(ID)O(ID)比较

方法名相同点缺点优势
openTo(id)都是打开某个节点isOpen方法不能判断该节点是否打开子节点打开的话,父节点也会相应打开
O(index)除根节点外,其余id必须从1开始而且不能空缺,反正少用1)能实现打开/关闭操作 2)ipOpen方法能判断该节点是否打开


下面分别用两种方法打开’MacBookPro系列’节点
1,openTo()直接打开
dtree
2,o()表面看起来没反应,只有点开“苹果”节点才能看到
dtree

dtree的配置CONFIG
配置干嘛用的?其实配置就是在树初始化时对某些效果进行一些必要的设置,比如config.useIcons=false
意思就是所有节点不显示图片了;

变量类型默认值描述
targetString  true所有节点的target 
folderLinksBoolean true文件夹可链接
useSelectionBoolean true节点可被选择(高亮)  
useCookiesBoolean true树可以使用cookies记住状态  
useLinesBoolean true创建带线的树
useIconsBoolean true创建带有图标的树
useStatusTextBoolean false用节点名替代显示在状态栏的节点url
closeSameLevelBoolean false只有一个有父级的节点可以被展开,当这个函数可用时openAll() 和 closeAll() 函数将不可用
inOrderBoolean false如果父级节点总是添加在子级节点之前,使用这个参数可以加速菜单显示


【例子】mytree.config.target = "mytarget";

 

页面中的书写规范
1,参数可以不写完,有默认值(从左至右,依次省略),例tree.add(id,pid,name,url);后面5个参数就可以省略
2,有间隔时的默认值(如存在第6个参数,但第5个参数想用默认值),即tree.add(id,pid,name,url,"",target);必须这样写tree.add(id,pid,name,url,"","","","",true);
3,特殊:如果需要显示title(参数5)必须设定相应链接地址(参数4),tree.add(2,0,‘照明控制系统’,‘a.jsp’,‘这是第四个参数title’);?//如果第四个参数为空则无法显示

高手进阶
1,JS创建类对象
JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像我们常听说的HASH表、字典、健/值对?),而其中的值类型可能是内置类型(如number,string),也可能是对象。

2,Js的prototype(原型)是什么
用来返回对象类型原型的引用,我们使用prototype属性提供对象的类的一组基本功能。并且对象的新实例会"继承"赋予该对象原型的操作。

3,了解一些DTRR.JS内的属性
Node类:
1,this._io = open || false;? //is open? 
2, this._is = false;? //is selected? 
3, this._ls = false;? //last sibling? 
4, this._hc = false;? //has child?

dtree类:
1, this.obj = objName; //对象别名,new dtree时可用
2, this.aNodes = []; //节点数组,每个下标存一个节点

一些可能使用的方法
1,closeLevel(node)关闭当前node节点同级的节点,假设与a节点同级的有b和c节点,而且a、b、c节点都打开了子节点,此时调用closeLevel(a),b、c节点会收拢起来,但a节点不会收拢。例:closeLevel(tree.aNodes[1]) –假设下标1是a

2,getSelected()返回你选择的节点的信息,返回的是一个node对象。例:getSelected().id就能返回选择的节点的id

3,setCS(node)查看节点是否有子节点或者是最后一个节点,方法体内存有’_hc’表示是否有子节点,而’_ls’表示最后的叶子节点

特别注意:aNodes[1]和o(1)等这里的下标绝对不是指add(id,pid..)里的节点id,而是根据整个树形结构按层次递加分配的。
dtree

O(2)以后结果会怎么样?
dtree

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值