javascript - 一个json遍历递归的问题?
PHP中文网
PHP中文网 2017-04-11 12:39:32
[JavaScript讨论组]
  var recData = [{
            "id": "1",
            "name": "\u603b\u88c1",
            "pid": "0",
            "child": [{
                "id": "2",
                "name": "\u526f\u603b\u88c1",
                "pid": "1",
                "child": [{
                    "id": "3",
                    "name": "\u90e8\u95e8\u603b\u76d1",
                    "pid": "2",
                    "child": [{
                        "id": "4",
                        "name": "\u5927\u533a\u603b\u76d1",
                        "pid": "3",
                        "child": [{
                            "id": "5",
                            "name": "\u603b\u76d1",
                            "pid": "5",
                            "child": []
                        }]
                    }]
                }]
            }]
        }];

根据这个json结构 做一个图片这样的DOM结构??

目前不清楚当有子集的情况下怎样插入li中。

  function deptList(data, pid) {
        var html = '';
        for (var i = 0; i < data.length; i++) {
            var getChild = data[i].child,
                getId = data[i].id,
                getName = data[i].name,
                getPid = data[i].pid;
            var temp = '
  • '+getName +'
  • '; if (getChild) { //判断有子集的情况 // } else { html += temp; html += deptList(getChild); } } return html; } var temp = deptList(recData, 0);//recData 是伪造静态数据 console.log(temp)
    PHP中文网
    PHP中文网

    认证0级讲师

    全部回复(3)
    伊谢尔伦
    function createTree(json) {
        let str = '<ul>';
        json.forEach(function(item) {
            str += '<li data-id=' + item.id + ' data-pid=' + item.pid + '><span class="job-title"><strong class="On">' + item.name + '</strong></span></li>';
            if (item.child) {
                str += createTree(item.child);
            }
        })
        str += '</ul>';
        return str
    }
    大家讲道理

    你结构和判断都不对。。你这样拼出来都是同级了!!

    ringa_lee
    试着解答一下:
    var html = '';
    function deptList(data) {
        for (var i = 0; i < recData.length; i++) {
            var getChild = recData[i].child,
                getId = recData[i].id,
                getName = recData[i].name,
                getPid = recData[i].pid;
            var temp = '<li data-id="' + getId + '" data-pid="' + getPid + '"> <span class="job-title"><strong class="On">'+getName +'</strong></span> </li>';
    
            if (getChild) {
                //判断有子集的情况
                html += temp;
                html += '<ul>';
                html += deptList(getChild);
                html += '</ul>';
            } else {
                html += temp;
            }
        }
        return html;
    }
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号