美文网首页网页前端后台技巧(CSS+HTML)前端笔记IT技术篇
根据json数据动态生成表格,自定义表格的列数

根据json数据动态生成表格,自定义表格的列数

作者: 菜菜___ | 来源:发表于2019-11-05 21:02 被阅读0次

    最近的项目需要根据后台的返回数据动态生成表格,当返回的json数组长度大于4时,绘制一个多行4列的表格,当小于4时,只需要绘制列数为具体长度的表格。
    自定义json数据如下:

    var jsonArr = [
        {
            "name":"计算机组成原理"
        },
        {
            "name":"计算机网络"
        },
        {
            "name":"数据结构"
        },
        {
            "name":"网页程序设计"
        },
        {
            "name":"嵌入式开发"
        },
        {
            "name":"高等数学"
        }
    ]
    

    绘制表格方法如下,主要是根据需要的列数绘制一行,然后画完一行开始下一行。

    /**
     * 根据json动态创建表格
     * @param cols 表格的列数,默认值4
     * @param json 渲染表格的json数据
     * @param key  json的键名
     * @param div  存放表格的容器
     */
        function createTable(cols,json,key,_obj){
            if(!cols){
                cols = 4;
            }
            if(json.length < 1){
                return;
            }
            var html = "";
            var count = 1;
            var trHtml = "";
            if(json.length<cols){
                for(i in json) {
                    html += "<td>" + json[i][key] + "</td>"
                }
                html = "<tr>"+html+"</tr>";
            }else{
                for(i in json){
                    if(count > cols){
                        html += "<tr>"+trHtml+"</tr>";
                        count = 1;
                        trHtml = "";
                    }
                    count++;
                    trHtml += "<td>"+json[i][key]+"</td>";
                }
                /*不足设定好的列数时,依然添加在最后面*/
                if(trHtml){
                    html += "<tr>"+trHtml+"</tr>";
                }
            }
            _obj.html(html);
        }
    

    完整代码如下:

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
            table{
                margin: 30px auto;
                border-collapse: collapse;
                text-align: center;
            }
            table td{
                border: 1px solid #ccc;
            }
        </style>
    </head>
    <body>
    <table></table>
    <script type="text/javascript"  src="//code.jquery.com/jquery-1.8.2.min.js" ></script>
    <script>
        $(function(){
            createTable(4,jsonArr,"name",$("table"))
        })
        var jsonArr = [
        {
            "name":"计算机组成原理"
        },
        {
            "name":"计算机网络"
        },
        {
            "name":"数据结构"
        },
        {
            "name":"网页程序设计"
        },
        {
            "name":"嵌入式开发"
        },
        {
            "name":"高等数学"
        }
        ]
    /**
     * 根据json动态创建表格
     * @param cols 表格的列数,默认值4
     * @param json 渲染表格的json数据
     * @param key  json的键名
     * @param div  存放表格的容器
     */
        function createTable(cols,json,key,_obj){
            if(!cols){
                cols = 4;
            }
            if(json.length < 1){
                return;
            }
            var html = "";
            var count = 1;
            var trHtml = "";
            if(json.length<cols){
                for(i in json) {
                    html += "<td>" + json[i][key] + "</td>"
                }
                html = "<tr>"+html+"</tr>";
            }else{
                for(i in json){
                    if(count > cols){
                        html += "<tr>"+trHtml+"</tr>";
                        count = 1;
                        trHtml = "";
                    }
                    count++;
                    trHtml += "<td>"+json[i][key]+"</td>";
                }
                /*不足设定好的列数时,记得添加在最后面*/
                if(trHtml){
                    html += "<tr>"+trHtml+"</tr>";
                }
            }
            _obj.html(html);
        }
    </script>
    </body>
    </html>
    

    效果图如下:


    原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe

    相关文章

      网友评论

        本文标题:根据json数据动态生成表格,自定义表格的列数

        本文链接:https://www.haomeiwen.com/subject/vqnebctx.html