改进了子乌的无限树
经过俺的琢磨,终于出炉了这个版本,能保持树的状态,当然是俺目前的想法是保持最后一个子菜单的状态就行了.
俺觉得还得加一个功能,就是点击同级别的菜单的时候,其他的菜单应该收缩,嗯,应该也蛮简单的,今天先发布测试版本1.0.1吧. -_-!
废话就不说了
看代码:
[ 可以先修改再运行 ]
hash 部分的注释:
需要注意的时候.俺是把每个节点的ID用_号整合到hash中去的...
如果您觉得看不懂..也可以联系我..有文字表达错误也可以联系我(最近有意识的联系表达中 -_-!)
function che(){ // 得到最终被点击的节点名称
var last_hash=l_hash; //获取上一个hash
var url=window.location.hash; //得到当前的hash
if(last_hash!=""||last_hash!=url){ // 判断上一个展开的节点 如果不是空就折叠
_urls=url.substring(1,url.length); //去掉hash中的#号
_obj=_urls.split("_"); //对hash中的id进行分解 等到具体 的ID值
for(var i =0; i<_obj.length;i++){ //遍历ID值
var _uls=$(_obj[i]);
if(_uls){ //如果ID存在
_uls.className="clsCollapse"; //设置该节点菜单的样式
var _s=_uls.parentNode.getElementsByTagName("span"); //得到菜单前面的指示符号(+ or -)的容器
if(!_s){ //如果不存在 --- 第一次打开
var _o=document.createElement("span"); //插入一个span
_s[0].insertBefore(_o,obj);
}
_s[0].innerHTML="+"; //设置span上的指示文字
_uls.style.display="none"; //设置他的样式--隐藏
}
}
}
if(url!=""){ // 最后一个点击的节点,保持状态.
urls=url.substring(1,url.length); //去掉hash中的#号
obj=urls.split("_"); //对hash中的id进行分解 等到具体 的ID值
for(var i =0; i<obj.length;i++){ //遍历ID值
var uls=$(obj[i]);
if(uls){ //如果ID存在
uls.className="clsExpand"; //设置该节点菜单的样式
var s=uls.parentNode.getElementsByTagName("span"); //得到菜单前面的指示符号(+ or -)的容器
if(!s){ //如果不存在 --- 第一次打开
var o=document.createElement("span");//插入一个span s[0].insertBefore(o,obj);
}
s[0].innerHTML="-"; //设置span上的指示文字
uls.style.display="block"; //设置他的样式--隐藏
}
}
}
var l_hash=url; //设置历史点击历史记录,用作下次加载菜单的时候做参考;
}
当然了,hash部分肯定还有不足的地方,俺第一次用hash. 如果您觉得有错误,或者可以优化的,请记得留下您的“墨宝”哈。。
--------------1-13-------------------
第2版...
这个版本是对上一个版本的的JS进行了小量的优化..第一版的错误找出来了.. 结构中有相同的ID....
另外多写一个哪个判断上一个hash的功能无效...实际上还是对获取hash对树进行排序.
奇怪的是,在IE和FF下居然对2个相同的ID的情况都不报错,还能正常运行JS
[ 可以先修改再运行 ]
这个是新版1.0.2
待加的功能...折叠上一个打开的按钮!
1.smartweb.cn 说 发表评论于2007-1-11 10:34:19发送邮件 个人网站
那么麻烦,真接用yahoo ui
2.飞飞 说 发表评论于2007-1-11 11:02:36发送邮件 个人网站
用人家的..永远不会进步哈....自己学会了.才是自己的 :)
3.飞飞 说 发表评论于2007-1-12 21:43:04发送邮件 个人网站
失败.对ID的编写还是有问题.
很有可能会重复..
4.飞飞 说 发表评论于2007-1-12 21:47:56发送邮件 个人网站
突然想到一个方法...
用ID..类别的ID.因为类别的ID具有惟一性,那么随便写一个字符+ID的方式这样就是不可能重复的了....
嗯..应该可以的...嘿嘿..刚刚否定自己.. 灵感就来了..
继续测试,,
5.飞飞 说 发表评论于2007-1-12 23:00:33发送邮件 个人网站
郁闷...功能消失了.原因还不知道呢..明天来测试把...
6.倩倩 说 发表评论于2007-1-18 12:06:25发送邮件 个人网站
很复杂的塞!!看不懂!!!
7.笑漫中原 说 发表评论于2007-1-19 8:56:37发送邮件 个人网站
第二版的还不如第一版的好呢,整个发生错误了.
8.飞飞 说 发表评论于2007-1-19 14:14:14发送邮件 个人网站
???? 那里错误?麻烦把错误提示给我。。我这里正常的
9.wein 说 发表评论于2007-7-25 10:29:35发送邮件 个人网站
谢谢!!!找到了 你的BLOG经营的很好
10.飞飞 说 发表评论于2007-7-25 12:57:03发送邮件 个人网站
过奖了。都是朋友帮忙的~
欢迎常来~
我来说几句: