`

简单的js树-rTree,可负载25万个节点(非ajax),代码少,易用易懂。更新checkbox补丁代码(在7楼)

阅读更多
这是我写的第一个js的控件,修修改改快大半年了,公司的老项目里在用。
废话不多说,直接说特点吧!
r.setNodedbc(true);根(有子节点)是否可以双击打开关闭。
r.setNodehref(false);根(有子节点)是否可以触发事件。
r.setLazy(false);是否延迟生成树。
r.canAlterbg(true);点击节点后改变背景色。这是用jquery做得补丁式的功能。
8个参数 id,父id,显示字符,关闭时图片路径,打开时图片路径,href的路劲/调的js方法,目标,是否关闭(lazy=true时无效)。
我觉得最大的特色就是lazy,我写的时候发现,树慢就慢在构造上,加载数据到不慢,所以lazy就是数据一次性加进去,但一次只生成一层。如果要打开好几层的话,可以自己调openNode()方法。
像大家说的checkbox等功能,我做过例子,是通过jquery后期再添加进去的,觉得jquery打补丁真的不错。
号称的250000条数据,是在全部都是随机节点的情况下,不死机的状况。就是一层的节点不能过大。。不然也会死。
代码很少200行,注释70行,大家如果用得上的话,我就最开心不过了!!!
下面是构造的代码,同dtree,有啥意见多提提,我好再改进,谢谢啦!!!

!!!!!!如果用js方法的话 参数要用&quot包起来。如 javascript:afun("xxx");!!!!!!!!!!!!

全部打开按钮,只适用于不使用lazy的情况

var r=new rTree("r");
r.setNodedbc(true);//双击开关节点
r.setNodehref(false);//根是否能绑事件 
r.setLazy(false);//延时构造树 要加入1000条以上节点时,请设为true
r.canAlterbg(true);//点击节点后,改变节点背景色
r.add(1,0,"a哈罗",'images/folderclose.gif','images/imgfolder.gif','javascript:alert("我们都是哈罗!!!")');
r.add(2,1,"男哈罗",'images/hello1.gif','',"./baidu.mht");
r.add(3,1,"b哈罗",'','images/hello1.gif');
r.add(4,1,"c哈罗");
r.add(5,1,"d哈罗");
r.add(6,2,"e女哈罗",'','',"images/hello1.jpg","show");
r.add(7,2,"f哈罗");
r.add(8,3,"g哈罗");
r.add(9,3,"h哈罗","","","","",true);
r.add(10,3,"i哈罗");
for(var i=11;i<11;i++){//设置随机的节点,10000的话还是很快的。。刷的一下就出来
	r.add(i,parseInt(Math.random()*i),"测试"+i);
}
//r.useBgImg("images/green.jpg");
r.startTree();

分享到:
评论
88 楼 rowanh 2010-02-02  
要排序的话只能在构造树以前,最终还是按顺序来的。
发了贴后我也看了狠多别人写的树,的的确确差距很大。
有的功能是很强,但使用并不方便,哎。现在做adobe的工作流,也只有在pdf里写点js了。
楼上的,深表歉意,请问您lazy(true)设置了没。如果设了,我再次向您表示歉意。
真的不是来顶了,只是礼貌性的回复
87 楼 madehaiyaozuce 2010-02-01  
meadlai 写道
2000个节点...有点卡.呵呵
不错.真是了不起啊

...
他号称
引用
250000的极限负载量,在遨游下测试,要十几秒,并且可能会报,脚本会造成无响应。点继续,树能出来。

这里就体现火狐的快了,在火狐下 250000数据,5秒能出来。

真不知道他什么配置
我还用的奔四2.4G的机子 刚试了下10000个节点 死翘翘。。。。还是火狐
还不如我自己写的 只体现树的结构 包括前面的线条 可以单击打开关闭子节点 一次性全部展开1w个节点1秒钟 10w个在我机子上很慢 最后能出来
看他25w条5秒钟。。。。
骗我注册个号郁闷
还是自己写的好 不过还在完善中
86 楼 meadlai 2010-01-27  
lengyue333 写道
25万节点的树,全部显示在页面上,确实很难实现。就算一个25万次的循环,浏览器就会提问是否继续,但是我在想,什么样的树或者什么样的业务会有25万个节点,25数数都要好几天,并且处理起来非常影响浏览器的速度。


科研运算很正常.25w个物种界面纲目科属种...
字体解析库...元素分类
85 楼 meadlai 2010-01-27  
2000个节点...有点卡.呵呵
不错.真是了不起啊
84 楼 meadlai 2010-01-27  
你好.我想知道这个js树支持排序吗?
只能按顺序构造吗?没有排序编号?
如果要实现同一个级别level下面的排序.
应该怎么修改?
83 楼 xiangkun 2009-09-27  
感觉还不够人性化,就比如说,我只要第一,第二节点展开。你那是,要么全部展开,要么全部关闭。还有就是,加checkbox的问题,最好都弄个可选项之类的好了。!

希望LZ有时间还得多完善啊,

关注!!!
82 楼 jackeysion 2009-09-27  
最好是把双击打开树改成 单击 打开/收起 节点
因为客户都是很懒的 , 双击嫌麻烦
或者, 可以做成自由定制 , 是双击打开 还是单击打开...
81 楼 jackeysion 2009-09-27  
怎么在树叶上加右键菜单?
80 楼 xiangkun 2009-09-27  
适合拿来做权限管理之类的东西。。如果LZ有空,建议优化下。
省得我们自己加代码了!!!
79 楼 baby69yy2000 2009-09-27  
//拼接
        str = marginLeft + control + icon + title + "<br>" + (hasSon ? "<div id='" + dkey + "' style='display:block'>" : "");

LZ, 这里用个StringBuffer拼接,速度是不是能提高点

还有这里
dbclick = "";
这样声明变量可是全局变量哦~~~
78 楼 cjx186 2009-09-25  
tonado 写道
kaki 写道
Ext 很好用而且很系统,没有必要重复制造轮子。


ext很慢吧,太大了

我觉得这很非常不错。不管ext慢不慢,不会美工,做久了自己看了都会不舒服,这玩意儿,代码量少,小方便。
本人喜欢小而精美的东西。
77 楼 dopic 2009-09-24  
递归方法是完成树所有节点的遍历是最好方法,6行代码
76 楼 amonlei 2009-09-23  
精神可嘉楼主。。不过。如果一个页面呈现个25w个节点,谁会用?精力应该花在刀刃上
75 楼 aixinziluo 2009-09-23  
不错。。支持下。。js好强大。改天实际用用。
74 楼 有话给鬼说 2009-09-23  
对于js,css高人,俺只有崇拜的空
73 楼 windywany 2009-09-22  
我用FF,跑到10000个就死掉了.真的可以跑到25万?
72 楼 sidac 2009-09-22  
先下载下来,等有空用一下试试
71 楼 tonado 2009-09-21  
kaki 写道
Ext 很好用而且很系统,没有必要重复制造轮子。


ext很慢吧,太大了
70 楼 tonado 2009-09-21  
不错,用过dtree,1000多节点的时候IE就会报脚本太慢的错,自己还改过里面的几个循环来提高性能,有空看看你这个,25w节点都支持挺强的~~~
69 楼 malasun 2009-09-18  
fm_974 写道
malasun 写道
借楼主个人气:看看这个树
http://sites.google.com/site/webjslib/
和这个框架
http://sourceforge.net/projects/sopo/files/


貌似这的例子Chrome下一个也不能用...

楼主的精神是可嘉的,虽然现在现在的树的例子已经不少了

这个写的比较早,那时候Chrome还没出来呢,而且你也看到了,代码风格还是很古老的。
然而:作为做b/s项目里面使用还是可以的【一般客户连火狐都不要求】,我就一直用自己的。

相关推荐

Global site tag (gtag.js) - Google Analytics