微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript递归算法生成树形菜单

本文实例为大家分享了js生成树形菜单的具体代码,供大家参考,具体内容如下

1、最终效果

(这里仅为实现算法,并加载至页面,不做任何css界面优化)

注释:本示例包含三级目录菜单,但实际上可支持N级(可使用该代码自行测试)

2、数据源

菜单信息一般来源于数据库中数据表,且为自连接表,其中包含主要字段(主键,菜单名称,父级id);

本示例在前端页面中使用对象数组模拟从数据库获取菜单信息;

rush:js;"> var menuArry = [ { id: 1,name: "办公管理",pid: 0 },{ id: 2,name: "请假申请",pid: 1 },{ id: 3,name: "出差申请",{ id: 4,name: "请假记录",pid: 2 },{ id: 5,name: "系统设置",{ id: 6,name: "权限管理",pid: 5 },{ id: 7,name: "用户角色",pid: 6 },{ id: 8,name: "菜单设置",]; 

注释:id——菜单主键id;name——菜单名称;pid——父级id

3、程序设计

菜单信息一般来源

//根据菜单主键id生成菜单列表html //id:菜单主键id //arry:菜单数组信息 function GetData(id,arry) { var childArry = GetParentArry(id,arry); if (childArry.length > 0) { menus += '<ul>'; for (var i in childArry) { menus += '<li>' + childArry[i].name; GetData(childArry[i].id,arry); menus += '</li>'; } menus += '</ul>'; } } //根据<a href="https://www.jb51.cc/tag/caidan/" target="_blank" class="keywords">菜单</a>主键id<a href="https://www.jb51.cc/tag/huoqu/" target="_blank" class="keywords">获取</a>下级<a href="https://www.jb51.cc/tag/caidan/" target="_blank" class="keywords">菜单</a> //id:<a href="https://www.jb51.cc/tag/caidan/" target="_blank" class="keywords">菜单</a>主键id //arry:<a href="https://www.jb51.cc/tag/caidan/" target="_blank" class="keywords">菜单</a>数组信息 function GetParentArry(id,arry) { var newArry = new Array(); for (var i in arry) { if (arry[i].pid == id) newArry.push(arry[i]); } return newArry; }

注释:本示例菜单使用ul无序列表演示,menus变量为最终生成菜单html

4、运行

rush:js;"> GetData(0,menuArry) $("body").append(menus);

注释:GetData(0,menuArry),0——顶级菜单主键

5、完整代码

rush:xhtml;">

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐