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 相关文章推荐
用javascript自动显示最后更新时间
Mar 15 Javascript
分享几个超级震憾的图片特效
Jan 08 Javascript
使用Jquery实现点击文字后变成文本框且可修改
Sep 21 Javascript
jquery中get和post的简单实例
Feb 04 Javascript
浅谈 jQuery 事件源码定位问题
Jun 18 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
Dec 04 Javascript
JS中位置与大小的获取方法
Nov 22 Javascript
jQuery实现文档树效果
Feb 20 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
Mar 04 Javascript
jquery 键盘事件的使用方法详解
Sep 13 jQuery
一些你可能不熟悉的JS知识点总结
Mar 15 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
Mar 26 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
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
python实现log日志的示例代码
2018/04/28 Python
python删除文本中行数标签的方法
2018/05/31 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
实习教师个人的自我评价
2013/11/08 职场文书
药店采购员岗位职责
2014/09/30 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
老乡聚会通知
2015/04/23 职场文书
销售人员管理制度
2015/08/06 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python
python unittest单元测试的步骤分析
2021/08/02 Python
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS