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面向对象编程(三) 非构造函数的继承
Aug 28 Javascript
如何在一个页面显示多个百度地图
Apr 07 Javascript
jquery实现按Enter键触发事件示例
Sep 10 Javascript
javascript写的异步加载js文件函数(支持数组传参)
Jun 07 Javascript
JS动画效果打开、关闭层的实现方法
May 09 Javascript
javascript 内置对象及常见API详细介绍
Nov 01 Javascript
create-react-app安装出错问题解决方法
Sep 04 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
Feb 26 Javascript
JavaScript闭包原理与用法学习笔记
May 29 Javascript
js实现html滑动图片拼图验证
Jun 24 Javascript
处理JavaScript值为undefined的7个小技巧
Jul 28 Javascript
JavaScript执行机制详细介绍
Dec 06 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
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
PHP 实现链式操作
2021/03/09 PHP
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
浅谈django的render函数的参数问题
2018/10/16 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
煤矿安全演讲稿
2014/05/09 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
加强党性修养心得体会
2016/01/21 职场文书
2019年最新借条范本!
2019/07/08 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
mysql sock 文件解析及作用讲解
2022/07/15 MySQL