table {font-size = 9pt}

td {height = 10px}

/**

* 构造树,初值为0

*/

function tree(n) {

var id = new Array("bar","pad","#","+");

if(n == 0) { // 初始化变量

n = 1;

i = 0;

s = "";

}

s += "

for(;i

var k = (n >= tree_ar[i+1][0])?0:1;

s += "

"+id[k+2]+""+tree_ar[i][1]+""; // 构造节点,注意这里的自定义属性value。作用是简化构造节点的描述,共享参数数组信息。

if(n > tree_ar[i+1][0]) { // 若期望层次大于当前层次,结束本层次返回上一层次。

s += "

";

return tree_ar[i+1][0];

}

if(n < tree_ar[i+1][0]) { // 若期望层次小于当前层次,递归进入下一层次。

s += "

";

var m = tree(tree_ar[++i][0]);

s += "

";

if(m < n) { // 当递归返回值小于当前层次期望值时,将产生连续的返回动作。

s += "";

return m;

}

}

}

s += "";

return s;

}

// 分枝节点的点击响应

v = this.parentElement.rows[this.rowIndex+1].style;

if(v.display == 'block') {

v.display = 'none';

this.cells[0].innerHTML = "+";

view.innerHTML = ""; // 自行修改为参数数组定义的闭合动作

}else {

v.display = 'block';

this.cells[0].innerHTML = "-";

view.innerHTML = ""+tree_ar[this.value][1]+""; // 自行修改为参数数组定义的展开动作

}

/**

* 以下代码用于关闭已展开的其他分枝

* 如需自行关闭展开的分枝则从这里直接返回或删去这段代码

*/

if(! tree_ar[this.value].type) // 如该节点为首次进入,则记录所在层次信息

genTreeInfo(this);

var n = 1*this.value+1;

for(i=n;i

if(tree_ar[i].type == "pad") {

tree_ar[i].obj2.style.display = 'none';

tree_ar[i].obj1.cells[0].innerHTML = "+";

}

}

while(tree_ar[--n][0] > 1); // 回溯到当前树的起点

while(--n >= 0) // 关闭排列在当前树的起点之前的树

if(tree_ar[n].type == "pad") {

tree_ar[n].obj2.style.display = 'none';

tree_ar[n].obj1.cells[0].innerHTML = "+";

}

/** 记录层次信息,用以简化遍历树时的复杂的节点描述 **/

function genTreeInfo(o) {

var el = o.parentElement;

for(var i=0;i

if(el.rows[i].id != "") {

tree_ar[el.rows[i].value].type = el.rows[i].id;

}

if(el.rows[i].id == "pad") {

tree_ar[el.rows[i].value].obj1 = el.rows[i];

tree_ar[el.rows[i].value].obj2 = el.rows[i+1];

}

}

}

// 无分枝节点的点击响应

view.innerHTML = ""+tree_ar[this.value][1]+""; // 自行修改为参数数组定义的点击动作

/**

* 基本参数数组,根据具体应用自行扩展

* 数据可较简单的由服务器端提供

* 列1:节点层次

* 列2:节点标题

* 其余自行扩充

*/

tree_ar = new Array(

new Array(1,"节点1"),

new Array(1,"节点2"),

new Array(2,"节点3"),

new Array(2,"节点4"),

new Array(3,"节点5"),

new Array(4,"节点6"),

new Array(5,"节点7"),

new Array(6,"节点8"),

new Array(7,"节点9"),

new Array(2,"节点10"),

new Array(1,"节点11"),

new Array(2,"节点12"),

new Array(2,"节点13"),

new Array(1,"节点14"),

new Array(1,"") // 为简化终止判断附加的空数据项

);

/*** 创建菜单 ***/

menus.innerHTML =tree(0);

欢迎大家阅读《简单的树形菜单_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

原创文章,转载请注明: 转载自搞代码

微信 赏一包辣条吧~

支付宝 赏一听可乐吧~

树形菜单 php,简单的树形菜单_php相关推荐

  1. python编写电子菜单_Python简单实现多级菜单

    1 #-*- coding: utf-8 -*- 2 #@Time : 2018-06-01 13:40 3 #@Author : 超人 4 #@Email : huxiaojiu111@gmail. ...

  2. excel下拉菜单vba_Excel 2007的经典菜单

    excel下拉菜单vba I noticed that Bits du Jour was offering a 70% discount on "Excel 2007 Ribbon to o ...

  3. java ui代码实现_Java + Element-UI 实现简单的树形菜单

    一.简单入门级树形菜单实现(纯后台逻辑) 1.简介 (1)开发环境 IDEA + JDK1.8 + mysql 1.8 SpringBoot 2.2.6 + mybatis-plus 此处仅后台开发( ...

  4. elementui树状菜单tree_Java + Element-UI 实现简单的树形菜单

    一.简单入门级树形菜单实现(纯后台逻辑) 1.简介 (1)开发环境 IDEA + JDK1.8 + mysql 1.8 SpringBoot 2.2.6 + mybatis-plus 此处仅后台开发( ...

  5. elementui树状菜单tree_Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)...

    这篇博客主要介绍树形控件的两个小小的功能: 下拉菜单 输入过滤框 以CSS样式为主,也会涉及到Vue组件和element组件的使用. 对于没有层级的数据,我们可以使用表格或卡片来展示.要展示或建立层级 ...

  6. html5树形菜单代码,jquery实现树形菜单完整代码

    本实例实现了树形的动态菜单,兼容IE8,火狐,Chrome等浏览器.使用了jQuery的toggle() 方法.效果和代码如下: jquery的树形菜单代码 body { font-family:&q ...

  7. java ztree json_java 树形转换JSON 工具类 / 树形子父级菜单递归 JSON 格式

    实体类: package tree; import java.util.List; /** * *2018-11-30 */ public class Menu { // 菜单id private S ...

  8. 二级联动菜单,简单实现

    /*** jQuery Linkage Menu** Copyright 2014, sunyingyuan* QQ: 1586383022* Email: yingyuansun@163.com** ...

  9. 简单的树形dp NOJ376 小强的Linux

    树形dp是建立的树的基础上的有二叉和三叉等等树,现在学到的知识很简单的树形dp,但还是要注意深搜时要标记避免已经搜素得到过的结果可以直接用了不用在浪费时间去搜素了.还有就是对根节点的处理. 点击打开链 ...

最新文章

  1. 操作系统重点快览第四章
  2. nav 计算机网络_CTO下载-计算机网络课件(配套韩立刚老师课程).ppt
  3. wash your month after meal
  4. c#将十进制转64进制
  5. 计算机数学基础模拟试题,计算机数学基础(A)模拟试题.doc
  6. IntentService解析
  7. 【LeetCode】剑指 Offer 42. 连续子数组的最大和
  8. 图形推理1000题及答案解析_判断推理图形推理——区分旋转翻转
  9. cmd oracle sys登录_Oracle 数据库、表、方案的逻辑备份与恢复
  10. 《编写可维护的Javascript》学习总结
  11. [bzoj 4774]修路
  12. vue内容省略表示(超过15位显示...)
  13. linux多媒体功能,Ubuntu 8.04中文强化版 多媒体功能更强大
  14. Tyvj P1065 津津的储蓄计划
  15. 《故障排除》——VMware Horizon agent:failed to install vmwusm driveer| winerror code 3758096967
  16. ROS机器人学习历程三:Publisher 和Subscriber
  17. 【Rust日报】2022-10-12 国内物联网芯片厂商发布世界上第一款 rust 芯片支持库
  18. mysql 切分_Mysql字符串切分
  19. 在家也能健身(05):腹肌
  20. 解析腾讯视频加密播放

热门文章

  1. C++ 播放音频流(PCM裸流)
  2. Android Studio导入Fresco
  3. ctfmn.exe——藏在字体目录FONTS下的***
  4. linux 发行版 suse opensuse 区别
  5. javascript es6 箭头函数 简介
  6. cve-2017–10271 XMLDecoder 反序列化漏洞 原理分析
  7. python flask 配置处理
  8. linux libuv 交叉编译 高性能事件驱动库
  9. linux 设置登录失败n次 锁定账户 /etc/pam.d/system-auth
  10. linux shell 日志环境变量 HISTFILESIZE 和 HISTSIZE的区别