当前位置:
首页
文章
前端
详情

递归生成部门树节点

// 生成部门树
function generateDepartmentTree(data, htmlArr) {
  data.forEach(function(item) {
    htmlArr.push(`<li>
                    <span data-id="${item.id}">
                      <span></span>
                      <span>${item.name}</span>
                    </span>`);
    if(item.children && item.children.length) {
      htmlArr.push(`<ul>`);
      generateDepartmentTree(item.children, htmlArr);
      htmlArr.push(`</ul>`);
    }
    htmlArr.push(`</li>`);
  });
}

var departmentTreeHtmlArr = [];
var list = [
    {
        id: 1,
        name: '1',
        children: [
            {
                id: 10,
                name: '10',
                children: [
                    {
                        id: 110,
                        name: '110'
                    },
                    {
                        id: 111,
                        name: '111'
                    }
                ]
            }
        ]
    }
];
generateDepartmentTree(list, departmentTreeHtmlArr);
var departmentTreeHtml = departmentTreeHtmlArr.join('');
console.log(departmentTreeHtml);

document.querySelector('ul').innerHTML = departmentTreeHtml ;

结果:

  • 1
    • 10
      • 110
      • 111

添加padding-left值:

function generateDepartmentTree(data, htmlArr, paddingLeft=0) {
  var isExistChildren;
  data.forEach(function(item) {
    isExistChildren = item.children && item.children.length;
    htmlArr.push(`<li>
                    <span data-id="${item.id}" style="padding-left: ${paddingLeft}px;">
                      <span></span>
                      <span title="${item.name}">${item.name}</span>
                    </span>`);
    if(isExistChildren) {
      htmlArr.push(`<ul>`);
      generateDepartmentTree(item.children, htmlArr, paddingLeft+20);
      htmlArr.push(`</ul>`);
    }
    htmlArr.push(`</li>`);
  });
}

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。