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

在网上找个很多的树实现,总感觉不尽如意,不是需要引用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,运行实例图如下:

时间: 2024-10-21 12:32:41

用JavaScript实现一个代码简洁、逻辑不复杂的多级树_javascript技巧的相关文章

JavaScript创建一个object对象并操作对象属性的用法_javascript技巧

本文实例讲述了JavaScript创建一个object对象并操作对象属性的用法.分享给大家供大家参考.具体分析如下: 下面的JS代码创建了一个myMovie对象,并给对象title和director属性赋值,通过Object定义对象,其属性可以不用定义,直接调用即可,非常简单. <script type="text/javascript"> var myMovie = new Object(); myMovie.title = "Aliens"; myM

javascript当中的代码嗅探扩展原生对象和原型(prototype)_javascript技巧

注:翻译之中有什么不恰当的地方,欢迎大家指正,祝大家双节快乐! 如果不是有特殊需要而去扩展原生对象和原型(prototype)的做法是不好的 复制代码 代码如下: //不要这样做 Array.prototype.map = function() { // 一些代码 }; 除非这样做是值得的,例如,向一些旧的浏览器中添加一些ECMAScript5中的方法. 在这种情况下,我们一般这样做: 复制代码 代码如下: if (!Array.prototype.map) { Array.prototype.

JavaScript:new 一个函数和直接调用函数的区别分析_javascript技巧

复制代码 代码如下: function Test() { this.name = 'Test'; return function() { return true; } } var test = new Test(); // 这里的 test 是什么? 是一个 Test 对象吗?错!这里 test 是一个函数--Test 中返回的 function() { return true; }.这时,new Test() 等效于 Test(),注意,是等效于,不是等于,如果使用new Test() ==

魔鬼字典 JavaScript 笔记 代码比较多乱第1/3页_javascript技巧

//2005中ctrl+J 有可能出提示 //文本编辑出注释的快捷键 名词解释: { //Java: 爪哇语言, 在因特网世界范围的 web 网页运转的以网络为基础的编程语言 (计算机用语) //Script : 手稿, 剧本, 手迹 //cs结构: 客户端应用程序,用户需要下载客户端,例如QQ //BS结构: 浏览器应用程序,具有远程服务器,例如网页 脚本语言:解释性语言,不进行编译,只在运行至相应代码时进行解释 } 完整的JavaScript组成 { 核心:ECMAScript 文档对象模型

JS实现的简洁纵向滑动菜单(滑动门)效果_javascript技巧

本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果.分享给大家供大家参考,具体如下: 这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一个"门"的内容存入JS数组中,这样可以减少代码量,但也带来了一个扩展的问题,扩展性方面有待完善,仅供参考. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-simple-zxhd-menu-demo/

javascript实现仿百度图片的瀑布流加载效果_javascript技巧

由于没有服务器,就用一个json字符串作为下拉时加载图片数据的来源了 html: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script src="js/waterfall.js"></script> <styl

不唐突的JavaScript的七条准则整理收集第1/2页_javascript技巧

1.不要做任何假设 (JavaScript是一个不可靠的助手) 可能不唐突的JavaScript 的最重要的一个特性就是--你要停止任何假设: * 不要假设JavaScript是可用的,你最好认为它很有可能是不可用的,而不是直接依赖于它. * 在你经过测试确认一些方法和属性可以使用之前,不要假设浏览器支持它们. * 不要假设HTML代码如你想象的那样正确,每次都要进行检查,并且当其不可用的时候就什么也不要做. * 让JavaScript的功能独立于输入设备 * 要记住其他的脚本可能会影响你的Ja

JavaScript中apply与call的用法意义及区别说明_javascript技巧

apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别: Function.prototype.apply(thisArg,argArray); Function.prototype.call(thisArg[,arg1[,arg2-]]); 从函数原型可以看到,第一个参数都被取名为thisArg,即所有函数内部的this指针都会被赋值为thisArg,这就实现了将函数作为另外一个对象的方法运行的目的.两个方法除了thisArg参数,都是为Funct

javascript记录文本框内文字个数检测文字个数变化_javascript技巧

最近在做一个项目中遇到这样一个问题,要对文本框中用户输入的文字进行记数,在下面显示出来,因为我们做的是一个短信发送平台,现在我们国家的短信服务,如果你的信息超过了70个字符,短信就会按二条给你下发.所以要求我们给用户显示他输入了多少个字.好便于用户知道我条信息会分几条给出. 在网了一个代码,放上去,开始使用的时候,还行,不错,可是使用了一段时间后发现了问题.就是你在删除文字后,上面的字数变化就有问题,后来研究了一下,找到问题的所在.onKeyDown="showLen(this)" o