js簡單封裝:簡單把數據直接輸出到表格之中


為了更方便實現字符串的格式化,這里仿照其他語言寫了format這個函數,如下:

1 //格式化字符串,這個方法網上有很多例子 不懂自行百度吧
2 String.prototype.format = function (param) {
3     var reg = /{([^{}]+)}/gm;
4     return this.replace(reg, function (match, name) {
5         return param[name];
6     });
7 };

 

接下來到重點,上代碼:

 1 /**
 2  * 清除並加載數組到表格中
 3  * @param table_id 表格ID 需要帶# 如"#myTable"
 4  * @param tr_template 帶參數的行模板 
 5  * @param arr_data 模板對應的數據
 6  * @param arr_params_name 模板對應的參數 需要和arr_data的長度一致
 7  */
 8 Utils.loadListToTable = function (table_id, tr_template, arr_data, arr_params_name) {
 9     var table = $(table_id);
10     var paramsLen = arr_params_name.length;//獲取參數的長度
11     //移除已經存在的行
12     $(table_id+" tr:not(:first)").remove();
13 
14     if(arr_data.length<1){
15 //因為本人采用Ajax加載數據,所以為了避免沒有效果,這里做了個判斷,
16 //如果傳入的數據長度小於1的話,直接在表格提示沒有數據
17         var non='<tr rowspan="3"class="text-center"><td colspan="'+paramsLen+'" style="color: #9e9e9e57;">什么都沒有</td></tr>'
18         $(table_id+" tbody:last").append(non);
19     }
20 
21     for (var j = 0; j < arr_data.length; j++) {
22 
23         var formatParams = {};
24         //構造參數
25         for (var i = 0; i < paramsLen; i++) {
26             formatParams[arr_params_name[i]] = arr_data[j][arr_params_name[i]];
27         }
28 
29         var row=tr_template.format(formatParams);
30         $(table_id+" tbody:last").append(row);
31     }
32 };

 

使用例子:

頁面代碼(只列出關鍵代碼):

 1  <div>
 2 
 3  <table id="myTable">
 4 
 5  <thead>
 6     <tr>
 7          <th>姓名</th>
 8          <th>密碼</th>
 9     </tr>
10  </thead>
11  <tbody>
12 
13 </tbody>
14 
15 </table>
16 
17 </div>

 

初始界面:

數據准備:

//生成一組數據
var testData=[{name:'wpr',pwd:'123'},{name:'wrp',pwd:'456'},{name:'rwp',pwd:'789'},{name:'wrp',pwd:'000'},{name:'prw',pwd:'666'}];
//行的模板 這里的目標表格列數為兩列
var row_templ = '<tr><td>{name}</td><td>{pwd}</td></tr>';

//構造參數列表,方便格式化
var paramsName=['name','pwd'];

//加載數據至表格
 Utils.loadListToTable('#myTable',row_templ ,testData,paramsName);

 

加載結果:

 

所有js代碼:

 1 $(function(){
 2 
 3 function Utils(){}
 4 
 5 Utils.loadListToTable = function (table_id, tr_template, arr_data, arr_params_name) {
 6     var table = $(table_id);
 7     var paramsLen = arr_params_name.length;//獲取參數的長度
 8     //移除已經存在的行
 9     $(table_id+" tr:not(:first)").remove();
10 
11     if(arr_data.length<1){
12         var non='<tr rowspan="3"class="text-center"><td colspan="'+paramsLen+'" style="color: #9e9e9e57;">什么都沒有</td></tr>'
13         $(table_id+" tbody:last").append(non);
14     }
15 
16     for (var j = 0; j < arr_data.length; j++) {
17 
18         var formatParams = {};
19         //構造參數
20         for (var i = 0; i < paramsLen; i++) {
21             formatParams[arr_params_name[i]] = arr_data[j][arr_params_name[i]];
22         }
23 
24         var row=tr_template.format(formatParams);
25         $(table_id+" tbody:last").append(row);
26     }
27 
28 
29 };
30 
31 //格式化字符串,這個方法網上有很多例子 不懂自行百度吧
32 String.prototype.format = function (param) {
33     var reg = /{([^{}]+)}/gm;
34     return this.replace(reg, function (match, name) {
35         return param[name];
36     });
37 };
38 
39 
40 //生成一組數據
41 var testData=[{name:'wpr',pwd:'123'},{name:'wrp',pwd:'456'},{name:'rwp',pwd:'789'},{name:'wrp',pwd:'000'},{name:'prw',pwd:'666'}];
42 //行的模板 這里的目標表格列數為兩列
43 var row_templ = '<tr><td>{name}</td><td>{pwd}</td></tr>';
44 
45 //構造參數列表,方便格式化
46 var paramsName=['name','pwd'];
47 //>------需要注意 行模板{}中的值和paramsName里面的名需要對應,其實可以進一步封裝------<
48 
49 //加載數據至表格
50  Utils.loadListToTable('#myTable',row_templ ,testData,paramsName);
51 
52 })

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM