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 屏蔽鼠标键盘的几段代码
Jan 02 Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 Javascript
JSON.parse()和JSON.stringify()使用介绍
Jun 20 Javascript
学习JavaScript编程语言的8张思维导图分享
Mar 27 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
Aug 24 Javascript
实现非常简单的js双向数据绑定
Nov 06 Javascript
jQuery学习笔记之Ajax用法实例详解
Dec 01 Javascript
javaScript基础详解
Jan 19 Javascript
Vue学习笔记进阶篇之过渡状态详解
Jul 14 Javascript
Vue单文件组件基础模板小结
Aug 10 Javascript
如何使用gpu.js改善JavaScript的性能
Dec 01 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
Dec 15 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数据类型判断函数有哪些
2013/09/23 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
2020/04/08 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
Python @property原理解析和用法实例
2020/02/11 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
儿科护理实习自我鉴定
2013/09/19 职场文书
本科生职业生涯规划书范文
2014/01/21 职场文书
办公室人员先进事迹
2014/01/27 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
民政局个人整改措施
2014/09/24 职场文书
运动会开幕词
2015/01/28 职场文书
2015年安全月活动总结
2015/03/26 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB
Java实现二分搜索树的示例代码
2022/03/17 Java/Android
Golang日志包的使用
2022/04/20 Golang