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 相关文章推荐
浅谈tudou土豆网首页图片延迟加载的效果
Jun 23 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
Jul 09 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
Nov 28 Javascript
jQuery中$.each使用详解
Jan 29 Javascript
JS简单实现String转Date的方法
Mar 02 Javascript
vue-ajax小封装实例
Sep 18 Javascript
解决axios发送post请求返回400状态码的问题
Aug 11 Javascript
Vue中的v-for指令不起效果的解决方法
Sep 27 Javascript
VUE 实现复制内容到剪贴板的两种方法
Apr 24 Javascript
详解Vue 单文件组件的三种写法
Feb 19 Javascript
JavaScript实现点击自制菜单效果
Feb 02 Javascript
vue自定义右键菜单之全局实现
Apr 09 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
Email+URL的判断和自动转换函数
2006/10/09 PHP
PHP4和PHP5共存于一系统
2006/11/17 PHP
什么是JavaScript
2009/08/13 Javascript
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
深入Python函数编程的一些特性
2015/04/13 Python
python下载图片实现方法(超简单)
2017/07/21 Python
python挖矿算力测试程序详解
2019/07/03 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
遥感技术与仪器求职信
2014/02/22 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
紫日观后感
2015/06/05 职场文书
浅谈redis缓存在项目中的使用
2021/05/20 Redis