javascript - 怎么将层级关系明确但层级不确定的数据拼成层级对应的html字符串?
迷茫
迷茫 2017-04-11 11:02:30
[JavaScript讨论组]

假如数据如下

var a=[
{
    "cdept": "001",
    "name": "公司",
    "children": [
        {
            "cdept": "001001",
            "name": "部门",
            "children": [
                {
                    "cdept": "001001001",
                    "name": "xx组",
                    "children": [
                        
                    ]
                },
                {
                    "cdept": "001001002",
                    "name": "xx2组",
                    "children": [
                        
                    ]
                }
            ]
        },
        {
            "cdept": "001002",
            "name": "部门2",
            "children": [
                {
                    "cdept": "001002001",
                    "name": "YY组",
                    "children": [
                        
                    ]
                }
            ]
        }
    ]
} ]

想渲染成对应层级关系的html如

<ul>
   <li>
   <a href="#">公司<a>
   <ul>
    <li>
        <a href="#">部门<a>
        <ul>
            <li>
            <a href="#">xx组<a>
            </li>
        </ul>
        <ul>
            <li>
            <a href="#">xx2组<a>
            </li>
        </ul>
    </li>
</ul>
  <ul>
    <li>
        <a href="#">部门2<a>
        <ul>
           <li>
           <a href="#">YY组<a>
           </li>
        </ul>
    </li>
</ul>
<li> </ul>

每层的html结构都一样。但是层级不确定。可能组下面还有层级。可能没有。我该怎么写js呢?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
PHP中文网

层级没有过深的话,可以递归:

function recGenerator(json){
    if(!json || !(''+json)){//没有children或者children为空
        innHtml="<ul><li><a href='#'>"+json.name+"</a></li></ul>";
    }else{
        var childrenHtml="";
        var i=0;
        while(json.children[i]){
            childrenHtml+=recGenerator(json.children[i++]);
        }
        innHtml="<ul><li><a href='#'>"+json.name+"</a>"+childrenHtml+"</li></ul>";
    }
    return innHtml;
}

console.log(recGenerator(a[0]));
<ul><li><a href='#'>公司</a><ul><li><a href='#'>部门</a><ul><li><a href='#'>xx组</a></li></ul><ul><li><a href='#'>xx2组</a></li></ul></li></ul><ul><li><a href='#'>部门2</a><ul><li><a href='#'>YY组</a></li></ul></li></ul></li></ul>
阿神

判断数组长度或字段值,如果>1就循环生成对应DOM即可。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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