js实现树形菜单

简介: js实现树形菜单
ul{
                list-style: none;
            }
            div {
                user-select: none;
            }
            .box {
                width: 100%;
                overflow: hidden;
                background-repeat: no-repeat;
                background-size: 100%;
                background-attachment: fixed;
            }
<div class="box"></div>
// 创建json文件数据,并获取
            let data;
            let xhr = new XMLHttpRequest();
            xhr.open('get', 'js/树形菜单.json');
            xhr.send();
            xhr.onreadystatechange = function() {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    let text = xhr.responseText;
                    data = JSON.parse(text);
                    show(data);
                }
            }
            // 获取DIV框架
            let box = document.getElementsByClassName('box')[0];
            // 创建空字符串
            let str = '';
            // 变量声明真
            let statuss = true;
            function show(data) {
                // 判断是真的时候添加ul标签,否则添加ul为none
                if (statuss) {
                    str += '<ul>';
                } else {
                    str += '<ul style="display:none">';
                }
                // 循环下标判断是否有子元素
                for (let i = 0; i < data.length; i++) {
                    str += '<li>' + data[i].name + '</li>';
                    if (data[i].children) {
                        statuss = false;
                        show(data[i].children);
                    } else {
                        str += '<ul></ul>';
                    }
                    str += '</li>';
                }
                str += '</ul>';
                box.innerHTML = str;
                console.log(str);
                // 返回 str清零,继续执行函数
                return str;
            }
            box.addEventListener("click", function(e) {
                let targets = e.target;
                console.log(targets);
                if (targets.nodeName === "LI") {
                    let nexts = targets.nextElementSibling;
                    if (nexts.nodeName === "UL") {
                        if (nexts.style.display == "none") {
                            nexts.style.display = "block";
                        } else {
                            nexts.style.display = "none";
                        }
                    }
                }
            })
相关文章
|
9月前
|
JSON JavaScript 前端开发
js树形菜单 如何用递归制作一个简单的树形菜单
js树形菜单 如何用递归制作一个简单的树形菜单
122 0
|
9月前
|
JSON JavaScript 数据格式
js递归树形菜单
js递归树形菜单
|
JSON JavaScript 数据格式
js递归树形菜单
js递归树形菜单
|
JavaScript
原生js树形菜单
原生js树形菜单
59 0
|
JSON JavaScript 前端开发
原生js做树形菜单(详细注释+加简易版)
原生js做树形菜单(详细注释+加简易版)
175 0
|
9月前
|
JSON JavaScript 数据格式
JS递归树形菜单
JS递归树形菜单
48 1
|
9月前
|
JSON JavaScript 前端开发
原生js做树形菜单(详细注释+加简易版)
原生js做树形菜单(详细注释+加简易版)
77 0
|
9月前
|
JSON JavaScript 前端开发
用JS实现简单的树形菜单的功能制作
用JS实现简单的树形菜单的功能制作
|
JSON JavaScript 前端开发
JS实现树形菜单递归函数(折叠菜单)
JS实现树形菜单递归函数(折叠菜单)
74 0
|
JavaScript 前端开发 容器
js的递归函数——实现可收放的树形菜单
js的递归函数——实现可收放的树形菜单
166 0

热门文章

最新文章