<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        如何采用table和jQuery加載數據并實現數據與表格布局的分離

        來源:懂視網 責編:小采 時間:2020-11-27 20:13:05
        文檔

        如何采用table和jQuery加載數據并實現數據與表格布局的分離

        如何采用table和jQuery加載數據并實現數據與表格布局的分離:在日常開發工作中,總是遇到通過異步請求數據并用表格展示的的場景,看到很多解決此類問題通常采用拼字符串的形式,如://js示例代碼 var td1="<td>B000123</td>"; var td2="<td>張三</td&g
        推薦度:
        導讀如何采用table和jQuery加載數據并實現數據與表格布局的分離:在日常開發工作中,總是遇到通過異步請求數據并用表格展示的的場景,看到很多解決此類問題通常采用拼字符串的形式,如://js示例代碼 var td1="<td>B000123</td>"; var td2="<td>張三</td&g
        在日常開發工作中,總是遇到通過異步請求數據并用表格展示的的場景,看到很多解決此類問題通常采用拼字符串的形式,如:

        //js示例代碼
        var td1="<td>B000123</td>";
        var td2="<td>張三</td>";
        var td3="<td>2017-09-17</td>";
        var td4="<td><a href="#" class="btn btn-default">編輯</a></td>";
        var tdn=......//此處省略好多列
        var trString="<tr>"+td1+td2+td3+td4+tdn+"</tr>";
        $("#tablelist").append(trString); //向ID為tablelist的表格追加行


        以上的方式采用數據和表格混合的方式可以滿足需求并實現效果,但是遇到業務需求變動,導致表格列增加、減少、前后調整時,修改以上代碼回很苦惱,甚至導致形如【$(this).find('td').eq(6).find('input').val() 】的代碼直接報錯,原因就在于數據與布局沒有分離。

        本著數據與布局分離的思想,把生成行的代碼分離出來,列的展現形式由表格決定,數據只負責向表格對應的列綁定數據即可,于是采用了以下方式:

        HTML布局部分:

        <table class="table table-hover" id="tablelist">
        <thead>
         <tr class="active">
        	<th fname="fnum">No.</th>
        	<th fname="checkbox"><input type="checkbox" selectall="fid"/></th>
        	<th fname="fempnum">編號</th>
        	<th fname="fempname">姓名</th>
        	<th fname="fstatus">狀態</th>
        	<th fname="fredate">時間</th>
        	<th fname="fope">操作</th>
         </tr>
        </thead>
        <tbody>
        
        </tbody>
        <tfoot>
         <tr class="active"><td>【分頁代碼】</td></tr>
        </tfoot>
        </table>

        JS部分:

        //定義表格ID
        var tableListId= "tablelist";
        //定義tfoot跨列數
        var tablecolnum;
        //定義表格列名
        var colNames;
        $(function () {
         //設置tfoot跨列數
         tablecolnum = setTablefootcolspan(tableListId);
         //獲得表格列名
         colNames = getTableListColNames(tableListId);
         //加載添加數據
         getDataTable(tablelistid)
        
        });
        
        //數據加載調用函數示例,現實應用場景是從服務器端請求Json方式
        function getDataTable(objTableID) {
         removeTbodyHtml(tableListId); //移除tbody內容
         //定義數據格式
         row = {
         index:"",
         fnum: "",
         checkbox: "",
         fempnum: "",
         fempname: "",
         fredate: "",
         fstatus: "",
         fope: ""
         }
        
        
         //從接口獲取數據后改造以下過程
         for (i = 0; i < 6; i++) {
         //賦值
         row.index = i;
         row.fnum = i+1;
         row.checkbox = "<input type='checkbox' name='fid' value='" + i + "'/>";
         row.fempnum = "C000"+row.fnum;
         row.fempname = "張三" + row.fnum;
         row.fstatus = "已啟用";
         row.fredate = "2017-09-17 12:12:11";
         row.fope = "<a href='#' class='btn btn-default'>進入</a>";
         var trAttrs = " class='warning'"; //自定義行樣式,當然可以定義更多
         //綁定數據到表格, row.index 必須唯一否則會引起行之間相互覆蓋
         BindDataTable(objTableID, colNames, row.index, row, trAttrs)
         }
         }
        
        //************綁定數據的通用JS函數 S**********
        
        //獲得表格列名
        function getTableListColNames(tableListId) {
         var colNames = [];
         var tablecolnum = $("#" + tableListId + " thead tr th").length;
         for (col = 0; col < tablecolnum; col++) {
         colNames[col] = $("#" + tableListId + " thead th:eq(" + col + ")").attr("fname");
         }
         return colNames;
        }
        
        
        //設置tfoot跨列數
        function setTablefootcolspan(tableid) {
         tablecolnum = $("#" + tableid + " thead tr th").length;
         if ($("#" + tableid + " tfoot") != undefined) {
         $("#" + tableid + " tfoot tr td").attr("colspan", tablecolnum);
         }
         return tablecolnum;
        }
        
        //移除tbody
        function removeTbodyHtml(objTableID) {
         $("#" + objTableID + " tbody").children().remove();
        }
        
        
        
        ///加載表格數據
        ///objTableID: 表格ID
        ///colNames:表格列名數組
        ///rowsIdx: 主鍵索引值
        ///rows:數據模型
        ///trAttrs:行熟悉,可自定義
        function BindDataTable(objTableID, colNames, rowsIdx,rows,trAttrs) {
         var trbefor="",trafter="",tdstr="";
         if(trAttrs==undefined){trAttrs="";}
         
         trbefor = "<tr rowid='tr" + rowsIdx + "' id='tr" + rowsIdx + "' "+trAttrs+">";
         for (col = 0; col < colNames.length; col++) {
         if (rows[colNames[col]] == undefined) {
         tdstr += "<td></td>";
         } else {
         tdstr += "<td>" + rows[colNames[col]] + "</td>";
         }
         }
         trafter= "</tr>";
        
         //判斷更新還是新增
         if ($("#" + objTableID + " tbody tr[rowid='tr" + rowsIdx + "']").length == 0)
         { 
         	$("#" + objTableID + " tbody").append(trbefor+tdstr+trafter); 
         }
         else
         { $("#" + objTableID + " tbody tr[rowid='tr" + rowsIdx + "']").html(tdstr); }
        
         tdstr = "";
        }
        
         //************綁定數據JS函數 E**********

        如此當表格需要調整時,只需要改變表格的Thead的位置即可,其他一切由數據決定,具體效果如下:


        注意:

        1. 表格必須有唯一id

        2. 表格必須包括thead,tbody,tfoot屬性

        3. 表格thead的單元格必須是 th 且必須有列明,如 fname="fname", 一一對應定義數據格式,如果不對應則不顯示該列

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        如何采用table和jQuery加載數據并實現數據與表格布局的分離

        如何采用table和jQuery加載數據并實現數據與表格布局的分離:在日常開發工作中,總是遇到通過異步請求數據并用表格展示的的場景,看到很多解決此類問題通常采用拼字符串的形式,如://js示例代碼 var td1="<td>B000123</td>"; var td2="<td>張三</td&g
        推薦度:
        標簽: 表格 數據 如何
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲国产一区在线| 亚洲婷婷国产精品电影人久久| 伊人久久大香线蕉亚洲五月天| 色偷偷亚洲第一综合网| 成人永久免费高清| 日韩亚洲翔田千里在线| 韩国日本好看电影免费看| 亚洲丰满熟女一区二区哦| 亚洲色在线无码国产精品不卡| 成人网站免费观看| 亚洲欧美国产精品专区久久| 免费无码黄网站在线观看| 国内成人精品亚洲日本语音 | 啦啦啦中文在线观看电视剧免费版| 亚洲喷奶水中文字幕电影| 国产精品爱啪在线线免费观看| 国产成人精品日本亚洲直接 | caoporn成人免费公开| 亚洲精品国产精品乱码在线观看| 免费看黄的成人APP| 亚洲国产成人在线视频| 成人毛片免费观看视频大全| 在线视频亚洲一区| 国产亚洲AV手机在线观看| 久久免费观看国产精品88av| 亚洲AV无码乱码在线观看代蜜桃| 蜜臀91精品国产免费观看 | 亚洲av无码专区青青草原| 亚洲av日韩片在线观看| 人妻免费一区二区三区最新| 亚洲精品第一国产综合野| 国产一区二区视频免费| 波多野结衣免费一区视频| 亚洲人成网站18禁止久久影院| 拔擦拔擦8x华人免费久久| 免费人成激情视频在线观看冫 | 免费萌白酱国产一区二区三区| 亚洲理论片在线中文字幕| 韩国18福利视频免费观看| 免费国产污网站在线观看| 亚洲国产日韩精品|