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 相关文章推荐
网页中的图片的处理方法与代码
Nov 26 Javascript
基于jquery的让textarea自适应高度的插件
Aug 03 Javascript
Jquery刷新页面背景图片随机变换的实现方法
Mar 15 Javascript
JavaScript获取页面中表单(form)数量的方法
Apr 03 Javascript
基于js中的原型、继承的一些想法
Aug 10 Javascript
js实现日历的简单算法
Jan 24 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
Dec 15 Javascript
详解Vue 事件修饰符capture 的使用
Dec 29 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
Mar 02 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
Oct 24 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
Nov 03 Javascript
JavaScript展开运算符和剩余运算符的区别详解
Feb 18 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
php入门小知识
2008/03/24 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
跟老齐学Python之有点简约的元组
2014/09/24 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
2017/11/06 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
python实现简易学生信息管理系统
2020/04/05 Python
python SVD压缩图像的实现代码
2019/11/05 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
幼儿如何来做好自我评价
2013/11/05 职场文书
行政总监岗位职责
2013/12/05 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
导游个人求职信范文
2014/03/23 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python