JavaScript递归算法生成树形菜单

前端之家收集整理的这篇文章主要介绍了JavaScript递归算法生成树形菜单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

1、最终效果

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

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

2、数据源

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

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

用户角色",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="/tag/caidan/" target="_blank" class="keywords">菜单</a>主键id<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>下级<a href="/tag/caidan/" target="_blank" class="keywords">菜单</a> //id:<a href="/tag/caidan/" target="_blank" class="keywords">菜单</a>主键id //arry:<a href="/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、运行

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

5、完整代码

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

猜你在找的JavaScript相关文章