javascript实现树形菜单的方法


Posted in Javascript onJuly 17, 2015

本文实例讲述了javascript实现树形菜单的方法。分享给大家供大家参考。具体如下:

var ME={
  ini:{i:true,d:{},d1:{},h:0,h1:0,h2:0},
  html:function(da,f){
    var s='<ul'+(f?' class="f"':'')+'>';
    for(var i=0,l=da.length;i<l;i++){
      if(typeof(da[i].pid)=='object'){
        s+='<li><button type="button" class="'+(i==0&&this.ini.i?'s1':(i+1==l?'s5':'s3'))+'" onclick="ME.yc(this)"></button><span><button type="button" class="r1"></button><a href="javascript:;">'+da[i].ming+'</a></span>';
        this.ini.i=false;
        s+=this.html(da[i].pid,(i+1==l));
      }else{
        s+='<li><button type="button" class="'+(i+1==l?'e3':'e1')+'"></button><span><button type="button" class="m1"></button><a href="https://3water.com" target="mainFrame">'+da[i].ming+'</a></span>';
      }
      s+='</li>';
    }
    s+='</ul>';
    return s;
  },
  st:function(id,da){
    document.getElementById(id).innerHTML=this.html(da);
  },
  yc:function(a){
    var s=a.className.substr(1);
    if(s%2){
      this.ini.d=a.parentNode.children[2];
      this.ini.h1=this.hei(this.ini.d);
      this.ini.h3=this.ini.h1/10;
      this.yc1(1);
      a.className='s'+(parseInt(s)+1);
      a.parentNode.children[1].children[0].className='r2';
      var ol=a.parentNode.parentNode._;
      if(typeof(ol)=='object'){
        this.ini.d1=ol;
        this.ini.h=ol.offsetHeight;
        this.ini.h2=this.ini.h/10;
        this.yc2(1);
        ol.parentNode.children[0].className='s'+(parseInt(ol.parentNode.children[0].className.substr(1))-1);
        ol.parentNode.children[1].children[0].className='r1';
      }
      a.parentNode.parentNode._=a.parentNode.children[2];
    }else{
      this.ini.d1=a.parentNode.children[2];
      this.ini.h=this.ini.d1.offsetHeight;
      this.ini.h2=this.ini.h/10;
      this.yc2(1);
      a.className='s'+(parseInt(s)-1);
      a.parentNode.children[1].children[0].className='r1';
      a.parentNode.parentNode._='';
    }
  },
  yc1:function(b){
    var h1=ME.ini.h1-(11/(b+1)-1)*ME.ini.h3;
    with(ME.ini.d.style){
      height=h1+'px';
      display='block';
    }
    if(b<10){
    setTimeout('ME.yc1('+(b+1)+')',25);
    }else{
    ME.ini.d.style.display='block';
    ME.ini.d.style.height='';
    }
  },
  yc2:function(b){
    var h1=(11/(b+1)-1)*ME.ini.h2;
    with(ME.ini.d1.style){
      height=h1+'px';
    }
    if(b<10){
    setTimeout('ME.yc2('+(b+1)+')',25);
    }else{
    ME.ini.d1.style.display='';
    ME.ini.d1.style.height='';
    }
  },
  hei:function(a){
    var b=a.cloneNode(true);
    b.style.position='absolute'; 
    b.style.display='block'; 
    b.style.visibility='hidden';
    a.parentNode.appendChild(b);
    var h=b.offsetHeight;
    a.parentNode.removeChild(b);
    return h;
  }
}

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
浏览器脚本兼容 文本框中,回车键触发事件的兼容
Jun 21 Javascript
jQuery实现统计输入文字个数的方法
Mar 11 Javascript
JavaScript调用客户端Java程序的方法
Jul 27 Javascript
深入理解jquery中的事件与动画
May 24 Javascript
基于js实现的限制文本框只可以输入数字
Dec 05 Javascript
jQuery实现select模糊查询(反射机制)
Jan 14 Javascript
手机端转换rem适应
Apr 01 Javascript
JS插件clipboard.js实现一键复制粘贴功能
Dec 04 Javascript
使用jQuery给Table动态增加行、清空table的方法
Sep 05 jQuery
Vue.js特性Scoped Slots的浅析
Feb 20 Javascript
vue配置nprogress实现页面顶部进度条
Sep 21 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
Feb 11 Javascript
JSON与XML优缺点对比分析
Jul 17 #Javascript
浅谈jQuery的offset()方法及示例分享
Jul 17 #Javascript
JavaScript用select实现日期控件
Jul 17 #Javascript
纯javascript制作日历控件
Jul 17 #Javascript
javascript生成不重复的随机数
Jul 17 #Javascript
jQuery实现径向动画菜单效果
Jul 17 #Javascript
jquery合并表格中相同文本的相邻单元格
Jul 17 #Javascript
You might like
PHP+DBM的同学录程序(1)
2006/10/09 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
通过隐藏option实现select的联动效果
2009/11/10 Javascript
JavaScript 继承使用分析
2011/05/12 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
Python基类函数的重载与调用实例分析
2015/01/12 Python
Python中的一些陷阱与技巧小结
2015/07/10 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
python字典与json转换的方法总结
2020/12/28 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
应届生新闻编辑求职信
2013/11/19 职场文书
大学生村官任职感言
2014/01/09 职场文书
卫生巾广告词
2014/03/18 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
离婚协议书范文
2015/01/26 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书