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 相关文章推荐
jquery获取元素索引值index()示例
Feb 13 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
Dec 07 Javascript
基于javascript制作微博发布栏效果
Apr 04 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
Jul 21 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
Oct 23 Javascript
微信小程序实现购物页面左右联动
Feb 15 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
Mar 07 Javascript
通过js给网页加上水印背景实例
Jun 17 Javascript
17道题让你彻底理解JS中的类型转换
Aug 08 Javascript
layui 富文本编辑器和textarea值的相互传递方法
Sep 18 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
Nov 07 Javascript
使用这 6个Vue加载动画库来减少我们网站的跳出率
May 18 Vue.js
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根据日期判断星座的函数分享
2014/02/13 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
PHP curl使用实例
2015/07/02 PHP
php生成动态验证码gif图片
2015/10/19 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python实现按中文排序的方法示例
2018/04/25 Python
django的登录注册系统的示例代码
2018/05/14 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
导游词之阆中古城
2019/12/23 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技