zoukankan      html  css  js  c++  java
  • javascript中的数据渲染与提取

    table数据

    <div id="tableDiv" style="overflow-x: scroll">
            <table class="table table-hover static-table my-table">
                <thead>
                <tr>
                    <th>行业</th>
                    
                    <th>9月10日</th>
                    
                    <th>9月11日</th>
                    
                    <th>9月12日</th>
                    
                    <th>9月13日</th>
                    
                    <th>9月14日</th>
                    
                    <th>9月15日</th>
                    
                    <th>9月16日</th>
                    
                    <th>9月17日</th>
                    
                    <th>9月18日</th>
                    
                    <th>9月19日</th>
                    
                    <th>9月20日</th>
                    
                    <th>9月21日</th>
                    
                    <th>9月22日</th>
                    
                    <th>9月23日</th>
                    
                    <th>9月24日</th>
                    
                </tr>
                </thead>
                <tbody>
                 <tr>
                    <td>服装</td>
                    
                    <td>2.15</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td><input serviceitemid="5000000000012" day="Mon Sep 18 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Tue Sep 19 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Wed Sep 20 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Thu Sep 21 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Fri Sep 22 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Sat Sep 23 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Sun Sep 24 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                </tr>
                <tr>
                    <td>服装</td>
                    
                    <td>2.15</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td>1.0</td>
                    
                    <td><input serviceitemid="5000000000012" day="Mon Sep 18 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Tue Sep 19 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Wed Sep 20 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Thu Sep 21 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Fri Sep 22 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Sat Sep 23 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                    <td><input serviceitemid="5000000000012" day="Sun Sep 24 00:00:00 CST 2017" type="text" size="2" value="1.0"></td>
                    
                </tr>
                
                </tbody>
            </table>
        </div>

    方式一:

    直接遍历table提取数据:

     function getTableData(){
            var tableData = [];
            //要求给table的class属性添加'my-table'
            var tableTrArr = $('.my-table').find('tbody').find('tr');
            for ( var i = 0; i < tableTrArr.size(); i++ ) { // tr
                tableData[i] = [];
                var tableTdArr = $('.my-table').find('tbody').find('tr').eq(i).find('td');
                for ( var j = 0; j < tableTdArr.size(); j++ ) { //td
                    if (tableTdArr.eq(j).find('input').size()) {
                        tableData[i].push(tableTdArr.eq(j).find('input').val());
                    } else {
                        tableData[i].push(tableTdArr.eq(j).html());
                    }
                }
            }
    
            //tableData为二维数组,包含table中的所有数据
    
        }

    方式二:

    页面上有个table,table里面的数据要通过RPC获取到的json格式的数据来渲染,table中有的td没有数据,没有数据的td中放input输入框,并带入默认数据

    意味着td中的数据有可能有改动

    提交保存时,提交到后台的数据已RPC相同的格式提交

    var tableData;//全局变量

    查询数据:

     var function queryData() {
                    $.ajax({
                        url: "/data/getRatio.json",
                        dataType: "json",
                        type: "POST",
                        data: {
                            "opCode":xxxxxxx,
                            "dateRange":2017-09-10/2017-09-25
                        },
                        success: function (result) {
                            if (result.hasError == true) {
                                alert("操作失败");
                                return;
                            }
                            if (!result.content || result.content.isSuccess == false) {
                               alert("操作失败");
                            } else {
                                showData(result.content.data);
                                
                            }
                        }
                    });
                };

    显示方法:

     function showData(data){
            tableData = data;
                                var $table = $('<table></table>');
                                var $tbody = $('<tbody></tbody>');
                                $table.append($tbody);
                                for (var trdata in tableData ) {
                                    var $tr = $('<tr></tr>');
                                    $tbody.append($tr);
                                    // tr
                                    for (var j = 0; j < trdata.length; i++) {
                                        // td
                                        var $td = $('<td></td>');
                                        $tr.append($td);
                                        if(trdata[j]){//trdata[j]有值把值填入td
                                            $td.html(trdata[j]);
                                        }else{//trdata[j]没有值,生成input输入框填入td
                                            var $input = $('<input type="text">');
                                            $td.append($input);
                                            $input.val(trdata[j]);
                                            //给输入框添加事件监听,input的改动会作用到tableData对象
                                            $td.find('input').on('change', function() {
                                                trdata[j] = $(this).val();
                                            })
                                        }
                                    }
                                }
                                $('#tablediv').append($table);
        }

    页面提交后,要把table中改动过的数据提交到后台保存

    按照以上的方式渲染数据并填加input的事件监听,input里面改动的数据会通过引用自动生效到tabelData,提交保存的时候,直接拿tableData提交到后台就可以了

    tableData的格式会和RPC :/data/getRatio.json返回的数据格式一致

  • 相关阅读:
    Python基础语法 第2节课(数据类型转换、运算符、字符串)
    python基础语法 第5节课 ( if 、 for )
    python基础语法 第4节课 (字典 元组 集合)
    Python基础语法 第3节课 (列表)
    A. Peter and Snow Blower 解析(思維、幾何)
    C. Dima and Salad 解析(思維、DP)
    D. Serval and Rooted Tree (樹狀DP)
    C2. Balanced Removals (Harder) (幾何、思維)
    B. Two Fairs 解析(思維、DFS、組合)
    D. Bash and a Tough Math Puzzle 解析(線段樹、數論)
  • 原文地址:https://www.cnblogs.com/james0/p/7542077.html
Copyright © 2011-2022 走看看