javascript - 数据怎么以层级的形式渲染到页面?

查看:663
本文介绍了javascript - 数据怎么以层级的形式渲染到页面?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var arr = [{
            "title": "金融业",
            "items": [{
                "title": "2016金融产品投资",
                "items": [{
                    "title": "2016金融产品投资分析1",
                    "data": ["用户投资资料1", "用户投资资料2", "用户投资资料3"]
                },{
                    "title": "2016金融产品投资分析2",
                    "data": ["用户投资资料1", "用户投资资料2", "用户投资资料3"]
                }]
            }, {
                "title": "2017金融产品投资",
                "data": ["用户投资资料33", "用户投资资料19"]
            }]
        }, {
            "title": "银行业",
            "items": [{
                "title": "2016银行产品投资",
                "data": ["用户投资资料1", "用户投资资料1"]
            }, {
                "title": "2017银行产品投资",
                "data": ["用户投资资料1", "用户投资资料1", "用户投资资料1"]
            }]
        }];

比如这种格式的数据怎么以层级渲染到页面,数据的层级不一定每次都相同,怎么写一个方法读取数据后自动按层级渲染到页面??
我写过三级层级的渲染,如下:

var arr = [{
            "title": "金融业",
            "items": [{
                "title": "2016金融产品投资",
                "data": ["用户投资资料1", "用户投资资料2", "用户投资资料3"]
            }, {
                "title": "2017金融产品投资",
                "data": ["用户投资资料33", "用户投资资料19"]
            }]
        }, {
            "title": "银行业",
            "items": [{
                "title": "2016银行产品投资",
                "data": ["用户投资资料1", "用户投资资料1"]
            }, {
                "title": "2017银行产品投资",
                "data": ["用户投资资料1", "用户投资资料1", "用户投资资料1"]
            }]
        }];

var htm = arr.map(function (da1, index1) {
            var htm2 = (arr[index1].items.map(function (da2, index2) {
                var htm3 = (arr[index1].items[index2].data.map(function (da3) {
                    return ("<li class='flow-list'>" + da3 + "</li>");
                })).join("");
                return ("<li class='lm-l'><a class='lm-a menu-t2'>" + da2.title + "<span class='drop-down-ico'></span></a>" + "<ul class='lm-w menu-w2'>" + htm3 + "</ul></li>");
            })).join("");
            return ("<li class='lm-l'><a class='lm-a menu-t1'>" + da1.title + "<span class='drop-down-ico'></span></a>" + "<ul class='lm-w menu-w1'>" + htm2 + "</ul></li>");
        }).join("");

        $("#flowWarp").html(htm);

但确定很明显只能显示三级层级的数据,数据有可能是四级五级层级就蒙蔽了,求大神解答???谢谢

这个问题已被关闭,原因:问题已解决 - 问题已解决,且对他人无借鉴意义

解决方案

递归如何?大概这样

var str='';
function digui(data){
    console.log(data);
   if(data!=undefined && data.length>0){
    data.map(function(item){
      str+="<li class='lm-l'><a class='lm-a menu-t2'>" + item.title + "<span class='drop-down-ico'></span></a>" + "<ul class='lm-w menu-w2'>";
      digui(item.items);
      str+= "</ul></li>";
    });
   }
}
digui(arr);
console.log(str);

这篇关于javascript - 数据怎么以层级的形式渲染到页面?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆