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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章