Jquery获取表格tr对象,并循环获取表格内容

一、场景

传多个表格数据到后台

一般用 [] 这样定义name:

<input name="grade[]"/>
<input name="age[]"/>

这样的话后台处理起来比较麻烦,直接根据class定位到表格的内容,把表格数据组装成对象返回到后台

二、示例

1、表格图片

在这里插入图片描述

2、表格数据图片

在这里插入图片描述

3、代码

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>循环获取表格的数据</title>
    <style>
        body{margin: 20px;}
        input{
            margin: 5px;
        }
        button{
            margin: 20px;
        }
        .border_distance{
            border-collapse: collapse;  /**设置小表格之间的间距为0*/
            border-right:1px solid red;
            border-top:1px solid red;
        }
        .border_distance tr td,th{
            border-left:1px solid green;
            border-bottom:1px solid green;
        }
    </style>
    <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
    <table class="border_distance">
        <thead>
            <tr>
                <th>姓名</th>
                <th>年级</th>
                <th>年龄</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td class="name">姓名1</td>
                <td class="grade">年级1</td>
                <td><input class="age" value="1"/></td>
            </tr>
            <tr>
                <td class="name">姓名2</td>
                <td class="grade">年级2</td>
                <td><input class="age" value="2"/></td>
            </tr>
            <tr>
                <td class="name">姓名3</td>
                <td class="grade">年级3</td>
                <td><input class="age" value="3"/></td>
            </tr>
        </tbody>
    </table>

    <button>查看表格数据</button>
</body>
<script>
    //按钮点击事件
    $('button').click(function () {
        let tableHtml = $(document).find('table.border_distance tbody tr');
        let data = getTableData(tableHtml);

        alert('表格的内容为:' + JSON.stringify(data) );

        //实际中把处理好的数据传到后台处理,如下:
        /*
        field.id = 1;
        field.users = data;
        $.ajax({
            url: '/index/.../...',
            type: 'POST',
            data: field,
            success: function(res) {
                //相关操作
            },
            error: function(res) {
                //异常提示
            }
        });
         */
    });

    /**
     * 获取表格数据
     * @param tableHtml 表格Html
     * @returns {Array}
     */
    function getTableData(tableHtml) {
        let result = [];
        if (tableHtml) {
            let length = tableHtml.length;
            for(let i = 0; i < length; i++) {   //追加数据
                let trData = {}; // 每行的数据

                //注意text()和val()的区别
                let name = $(tableHtml).eq(i).find('.name').text();
                let grade = $(tableHtml).eq(i).find('.grade').text();
                let age = $(tableHtml).eq(i).find('.age').val();

                //如果不存在给默认值(视情况而定)
                name = (name == undefined) ? '' : name;
                grade = (grade == undefined) ? '' : grade;
                age = (age == undefined) ? 0 : age;

                //数据赋值
                trData.name = name;
                trData.grade = grade;
                trData.age = age;

                result.push(trData);    //数据追加
            }
        }
        return result;
    }
</script>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章