用JavaScript实现一个代码简洁、逻辑不复杂的多级树


Posted in Javascript onMay 23, 2014

在网上找个很多的树实现,总感觉不尽如意,不是需要引用JS外部文件使用插件,就是代码过多让人看的眼花,实际上我只是想实现一个代码简洁、逻辑不复杂的树,费话不多说直接上代码:

1,首先写CSS样式,这个必需要写的头部最先渲染

<style> 
.ps{margin-left:10px;display:none;} .f { 
background: url("add.gif") no-repeat scroll -4px -21px; 
cursor: pointer; 
height: 35px; 
line-height: 37px; 
padding-left: 20px; 
} 
</style>

2,在页面主体中添加树的具体内容,此内容也可以动态展示(动态展示只要针对规则就很好实现了,这就不用说了吧偷笑)
<div class="f" id="sgc1">密码修改</div> 
<div class="f" id="sgc2">商品选择</div> 
<div class="f" id="sgc3" onclick="w('gc3')">分类设置</div> 
<div class="ps" id="gc3" style="display:none"> 
<div id="sfgc91" class="f" onclick="k('fgc91')">Must See</div> 
<div class="ps" id="fgc91"> 
<div class="f">设置MustSee商品</div> 
</div> 
<div id="sfgc93" class="f" onclick="k('fgc93')">Spotlight</div> 
<div class="ps" id="fgc93"> 
<div class="f">设置Spotlight商品</div> 
</div> 
<div id="sfgc94" class="f" onclick="k('fgc94')">Daily Specials</div> 
<div class="ps" id="fgc94"> 
<div class="f">设置DailySpecials商品</div> 
</div> 
<div id="sfgc95" class="f" onclick="k('fgc95')">HotCategory</div> 
<div class="ps" id="fgc95"> 
<div class="f">设置HotCategory分类</div> 
<div class="f">设置HotCategory商品</div> 
</div> 
<div id="sfgc96" class="f" onclick="k('fgc96')">Hot & Cool Picks</div> 
<div class="ps" id="fgc96"> 
<div class="f">设置Hot & Cool Picks商品</div> 
</div> 
<div id="sfgc97" class="f" onclick="k('fgc97')">FeaturedCategorie</div> 
<div class="ps" id="fgc97"> 
<div class="f">设置FeaturedCategorie分类</div> 
<div class="f">设置FeaturedCategorie商品</div> 
</div> 
<div id="sfgc98" class="f" onclick="k('fgc98')">You Might Also Like…</div> 
<div class="ps" id="fgc98"> 
<div class="f">设置You Might Also Like…分类</div> 
<div class="f">设置You Might Also Like…商品</div> 
</div> 
</div> 
<div class="f" id="sgc4" onclick="w('gc4')">系统设置</div> 
<div class="ps" id="gc4" style="display:none"> 
<div class="f">用户管理</div> 
</div>

3,重头戏来了,同鞋注意了,接下来实现JS的树形控制
function w(vd) { 
var ob = document.getElementById(vd); 
if (ob.style.display == "block" || ob.style.display == "") { 
ob.style.display = "none"; 
var ob2 = document.getElementById('s' + vd); 
ob2.style.background = "url(add.gif) -4px -21px no-repeat"; 
} 
else { 
ob.style.display = "block"; 
var ob2 = document.getElementById('s' + vd); 
ob2.style.background = "url(add.gif) -4px 4px no-repeat;"; 
} 
} 
function k(vd) { 
var ob = document.getElementById(vd); 
if (ob.style.display == "block") { 
ob.style.display = "none"; 
var ob2 = document.getElementById('s' + vd); 
ob2.style.background = "url(add.gif) -4px -21px no-repeat"; 
} 
else { 
ob.style.display = "block"; 
var ob2 = document.getElementById('s' + vd); 
ob2.style.background = "url(add.gif) -4px 4px no-repeat;"; 
} 
}

4,运行实例图如下:
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
Javascript 相关文章推荐
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
Sep 29 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
Mar 12 Javascript
js实现分享到随页面滚动而滑动效果的方法
Apr 10 Javascript
Javascript中replace()小结
Sep 30 Javascript
javascript鼠标滑过显示二级菜单特效
Nov 18 Javascript
vue实现ToDoList简单实例
Feb 07 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
Jul 13 Javascript
select获取下拉框的值 下拉框默认选中方法
Feb 28 Javascript
vue.js获得当前元素的文字信息方法
Mar 09 Javascript
详解Vuex下Store的模块化拆分实践
Jul 31 Javascript
解决layui table表单提示数据接口请求异常的问题
Sep 24 Javascript
JavaScript流程控制(循环)
Dec 06 Javascript
ie 7/8不支持trim的属性的解决方案
May 23 #Javascript
JQuery 控制内容长度超出规定长度显示省略号
May 23 #Javascript
jquery重复提交请求的原因浅析
May 23 #Javascript
jquery仿搜索自动联想功能代码
May 23 #Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
May 23 #Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
May 23 #Javascript
jQuery 获取兄弟元素的几种不错方法
May 23 #Javascript
You might like
PHP目录操作实例总结
2016/09/27 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
jquery 页面全选框实践代码
2010/04/02 Javascript
jQuery 打造动态下滑菜单实现说明
2010/04/15 Javascript
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
vue中使用props传值的方法
2019/05/08 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
Python处理文本文件中控制字符的方法
2017/02/07 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
python队列原理及实现方法示例
2019/11/27 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
求职简历自荐信
2013/10/20 职场文书
毕业自我鉴定范文
2013/11/06 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
护士自荐信怎么写
2015/03/06 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
JavaScript实现简单图片切换
2021/04/29 Javascript
船舶调度指挥系统——助力智慧海事
2022/02/18 无线电
Docker安装MySql8并远程访问的实现
2022/07/07 Servers