网页前端后台技巧(CSS+HTML)前端笔记IT技术篇

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

2019-11-05  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读