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 iframe内的函数调用实现方法
Jul 19 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
Apr 23 Javascript
jQuery拖动图片删除示例
May 10 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
Jan 10 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
Jun 26 Javascript
node.js中的console用法总结
Dec 15 Javascript
requireJS使用指南
Apr 27 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
Oct 12 Javascript
Javascript中的prototype与继承
Feb 06 Javascript
Vue.js实战之组件的进阶
Apr 04 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
Mar 30 Javascript
vue增加强缓存和版本号的实现方法
May 01 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
第十节--抽象方法和抽象类
2006/11/16 PHP
php中几种常见安全设置详解
2010/04/06 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
2018/09/16 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
Django中使用Celery的方法示例
2018/11/29 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
历史系毕业生自荐信
2013/10/28 职场文书
中学教师请假制度
2014/02/03 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
python中的装饰器该如何使用
2021/06/18 Python
python之基数排序的实现
2021/07/26 Python
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python