js实现表格字段本地排序

来源:互联网 发布:genbank数据库网址 编辑:程序博客网 时间:2024/05/21 08:50

一、JS代码,文件名为code.js如下:

[javascript] view plain copy
  1. (function($){  
  2.     //插件  
  3.     $.extend($,{  
  4.         //命名空间  
  5.         sortTable:{  
  6.             sort:function(tableId,Idx){  
  7.                 var table = document.getElementById(tableId);  
  8.                 var tbody = table.tBodies[0];  
  9.                 var tr = tbody.rows;   
  10.           
  11.                 var trValue = new Array();  
  12.                 for (var i=0; i<tr.length; i++ ) {  
  13.                     trValue[i] = tr[i];  //将表格中各行的信息存储在新建的数组中  
  14.                 }  
  15.           
  16.                 if (tbody.sortCol == Idx) {  
  17.                     trValue.reverse(); //如果该列已经进行排序过了,则直接对其反序排列  
  18.                 } else {  
  19.                     //trValue.sort(compareTrs(Idx));  //进行排序  
  20.                     trValue.sort(function(tr1, tr2){  
  21.                         var value1 = tr1.cells[Idx].innerHTML;  
  22.                         var value2 = tr2.cells[Idx].innerHTML;  
  23.                         return value1.localeCompare(value2);  
  24.                     });  
  25.                 }  
  26.           
  27.                 var fragment = document.createDocumentFragment();  //新建一个代码片段,用于保存排序后的结果  
  28.                 for (var i=0; i<trValue.length; i++ ) {  
  29.                     fragment.appendChild(trValue[i]);  
  30.                 }  
  31.           
  32.                 tbody.appendChild(fragment); //将排序的结果替换掉之前的值  
  33.                 tbody.sortCol = Idx;  
  34.             }  
  35.         }  
  36.     });         
  37. })(jQuery);  

二、HTML部分,主要引入JS代码与指定ID调用JS的排序方法,如下:

[html] view plain copy
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  5. <title>自定义表格排序(JS)</title>  
  6. <script type="text/javascript" src="jquery-1.4.3.js"></script>  
  7. <script type="text/javascript" src="code.js"></script>  
  8. <style type="text/css">  
  9.     * {  
  10.         padding:0;  
  11.         margin:0;  
  12.     }  
  13.   
  14.     body {  
  15.         font-family:verdana;  
  16.         font-size:12px;  
  17.     }  
  18.   
  19.     .content {  
  20.         width:550px;  
  21.         margin:20px auto;  
  22.     }  
  23.   
  24.     .content h1 {  
  25.         font-family:'微软雅黑';  
  26.         font-size:18px;  
  27.         padding-bottom:5px;  
  28.     }  
  29.   
  30.     table {  
  31.         width:100%;  
  32.     }  
  33.   
  34.     th, td {  
  35.         padding:6px 0;  
  36.         text-align:center;  
  37.     }  
  38.   
  39.     th {  
  40.         background-color:#007D28;  
  41.         color:#ffffff;  
  42.     }  
  43.       
  44.     tr {  
  45.         background-color:#E8FFE8;  
  46.     }  
  47.       
  48.     .odd {  
  49.         background-color:#FFF3EE;  
  50.     }  
  51.       
  52.     .highlight {  
  53.         background-color:#FFF3EE;  
  54. }  
  55.   
  56. </style>  
  57. </head>  
  58.   
  59. <body>  
  60. <table summary="user infomation table" id="tableSort">  
  61.         <thead>  
  62.             <tr>  
  63.                 <th onclick="$.sortTable.sort('tableSort',0)" style="cursor: pointer;">会员ID</th>  
  64.                 <th onclick="$.sortTable.sort('tableSort',1)" style="cursor: pointer;">会员名</th>  
  65.                 <th onclick="$.sortTable.sort('tableSort',2)" style="cursor: pointer;">邮箱</th>  
  66.                 <th onclick="$.sortTable.sort('tableSort',3)" style="cursor: pointer;">会员组</th>  
  67.                 <th onclick="$.sortTable.sort('tableSort',4)" style="cursor: pointer;">城市</th>  
  68.                 <th onclick="$.sortTable.sort('tableSort',5)" style="cursor: pointer;">注册时间</th>  
  69.             </tr>  
  70.         </thead>  
  71.         <tbody>  
  72.             <tr>  
  73.                 <td>126</td>  
  74.                 <td>webw3c</td>  
  75.                 <td>este@126.com</td>  
  76.                 <td>普通会员</td>  
  77.                 <td>北京</td>  
  78.                 <td>2011-04-13</td>  
  79.             </tr>  
  80.             <tr>  
  81.                 <td>145</td>  
  82.                 <td>test001</td>  
  83.                 <td>test001@126.com</td>  
  84.                 <td>中级会员</td>  
  85.                 <td>合肥</td>  
  86.                 <td>2011-03-27</td>  
  87.             </tr>  
  88.             <tr>  
  89.                 <td>116</td>  
  90.                 <td>wuliao</td>  
  91.                 <td>wuliao@126.com</td>  
  92.                 <td>普通会员</td>  
  93.                 <td>南昌</td>  
  94.                 <td>2011-04-01</td>  
  95.             </tr>  
  96.             <tr>  
  97.                 <td>129</td>  
  98.                 <td>tired</td>  
  99.                 <td>tired@126.com</td>  
  100.                 <td>中级会员</td>  
  101.                 <td>北京</td>  
  102.                 <td>2011-04-06</td>  
  103.             </tr>  
  104.             <tr>  
  105.                 <td>155</td>  
  106.                 <td>tiredso</td>  
  107.                 <td>tireds0@126.com</td>  
  108.                 <td>中级会员</td>  
  109.                 <td>武汉</td>  
  110.                 <td>2011-04-06</td>  
  111.             </tr>  
  112.             <tr>  
  113.                 <td>131</td>  
  114.                 <td>javascript</td>  
  115.                 <td>js2011@126.com</td>  
  116.                 <td>中级会员</td>  
  117.                 <td>武汉</td>  
  118.                 <td>2011-04-08</td>  
  119.             </tr>  
  120.             <tr>  
  121.                 <td>132</td>  
  122.                 <td>jQuery</td>  
  123.                 <td>jQuery@126.com</td>  
  124.                 <td>高级会员</td>  
  125.                 <td>北京</td>  
  126.                 <td>2011-04-12</td>  
  127.             </tr>  
  128.         </tbody>  
  129.     </table>  
  130. </body>  
  131. </html>  
0 0