博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构建简单的json树形菜单
阅读量:5307 次
发布时间:2019-06-14

本文共 2854 字,大约阅读时间需要 9 分钟。

json结构:

var Menu = [{            tit:"一级菜单",            submenu:[{                tit:"二级菜单",                url:"",                func:function(){                    alert('what do you want to do?');                }            },{                tit:"二级菜单",                func:function(){                    alert('do what?');                },                submenu:[{                    tit:"三级菜单",                    url:"",                    submenu:[{                        tit:"四级菜单",                        url:""                    },{                        tit:"四级菜单",                        url:""                    }]                },{                    tit:"三级菜单",                    url:""                }]            }]        },{            tit:"一级菜单",            submenu:[{                tit:"二级菜单",                url:""            },{                tit:"二级菜单",                submenu:[{                    tit:"三级菜单",                    url:""                },{                    tit:"三级菜单",                    url:""                }]            }]        }];
View Code

构建菜单处理函数

/*     * @构建树形菜单     * @arrJson:json数据     * @container:菜单容器     */    function menuTree(jsonArr,container,treeId){        var oText,oUrl;        var oUl = document.createElement('ul');        for(var i = 0 ;i < jsonArr.length; i++){            var oLi = document.createElement('li');            oUrl = jsonArr[i].url || "javascript:void(0)";            oText = jsonArr[i].tit;            if(jsonArr[i].submenu){                 oLi.innerHTML =''+oText+'';                  menuTree(jsonArr[i].submenu,oLi);//递归构建子菜单            }else{                oLi.innerHTML = ''+oText+'';            }            //自定义函数            if(typeof jsonArr[i].func =="function"){                 oLi.getElementsByTagName('a')[0].func = jsonArr[i].func;                oLi.getElementsByTagName('a')[0].οnclick=function(){                    this.func();                }            }            oUl.appendChild(oLi);        }        //最外层容器事件委托        if(treeId){            document.getElementById(treeId).onclick = function(e){                var event = e || window.event;                var target = event.target||event.srcElement;                var next = target.nextSibling;                if(target.nodeName.toLowerCase() == "a"){                    if(next){                        if(next.style.display=="" || next.style.display=="block"){                            next.style.display="none";                        }else{                            next.style.display="block";                        }                    }                }            }        }        container.appendChild(oUl);    }
View Code

完整demo:

    
json树形菜单

构建json树形菜单

View Code

效果图:

 

完整实例:

 

转载于:https://www.cnblogs.com/GeniusLyzh/p/4064714.html

你可能感兴趣的文章
html的的归纳点
查看>>
地图经纬度C#和Javascript的压缩以及解压
查看>>
sed对指定行添加或删除注释
查看>>
C#矩形框沿直线移动
查看>>
springboot中访问jsp文件方式
查看>>
树的直径新求法、codeforces 690C3 Brain Network (hard)
查看>>
五子棋游戏SRS文档
查看>>
Hdu 2476 String painter (区间DP)
查看>>
找路径
查看>>
js、jquery获取当前url中各个参数
查看>>
Android webView解析URL参数
查看>>
一个汇编的HelloWorld!
查看>>
文科学生思维与理科学生思维对比
查看>>
一台电脑如何管理多个ssh key
查看>>
C# 定时关机小程序
查看>>
【blog】推荐一个博客系统后台管理模板 - pinghsu
查看>>
说说MySQL索引
查看>>
zabbix发送邮件脚本
查看>>
生成随机的数字和字母组合
查看>>
File类
查看>>