js 对页面table数据排序

js:

[c-sharp]  view plain copy
  1. function ieOrFireFox(ob)  
  2. {  
  3.     if (ob.textContent != null)  
  4.     return ob.textContent;  
  5.     var s = ob.innerText;  
  6.     return s.substring(0, s.length);  
  7. }  
  8. //排序 tableId: 表的id,iCol:第几列 ;dataType:iCol对应的列显示数据的数据类型  
  9. function sortAble(tableId, iCol, dataType) {  
  10.     var table = document.getElementById(tableId);  
  11.     var tbody = table.tBodies[0];  
  12.     var colRows = tbody.rows;  
  13.     var aTrs = new Array;  
  14.          //将将得到的列放入数组,备用  
  15.     for (var i=0; i < colRows.length; i++) {  
  16.         aTrs[i] = colRows[i];  
  17.     }  
  18.                         
  19.                    
  20.     //判断上一次排列的列和现在需要排列的是否同一个。  
  21.     if (table.sortCol == iCol) {  
  22.         aTrs.reverse();  
  23.     } else {  
  24.         //如果不是同一列,使用数组的sort方法,传进排序函数  
  25.         aTrs.sort(compareEle(iCol, dataType));  
  26.     }  
  27.           
  28.     var oFragment = document.createDocumentFragment();  
  29.                   
  30.     for (var i=0; i < aTrs.length; i++) {  
  31.         oFragment.appendChild(aTrs[i]);  
  32.     }                  
  33.     tbody.appendChild(oFragment);  
  34.     //记录最后一次排序的列索引  
  35.     table.sortCol = iCol;  
  36. }  
  37. //将列的类型转化成相应的可以排列的数据类型  
  38. function convert(sValue, dataType) {  
  39.     switch(dataType) {  
  40.     case "int":  
  41.         return parseInt(sValue);  
  42.     case "float":  
  43.         return parseFloat(sValue);  
  44.     case "date":  
  45.         return new Date(Date.parse(sValue));  
  46.     default:  
  47.         return sValue.toString();  
  48.     }  
  49. }  
  50.               
  51. //排序函数,iCol表示列索引,dataType表示该列的数据类型  
  52. function compareEle(iCol, dataType) {  
  53.     return  function (oTR1, oTR2) {  
  54.         var vValue1 = convert(ieOrFireFox(oTR1.cells[iCol]), dataType);  
  55.         var vValue2 = convert(ieOrFireFox(oTR2.cells[iCol]), dataType);  
  56.         if (vValue1 < vValue2) {  
  57.             return -1;  
  58.         } else if (vValue1 > vValue2) {  
  59.             return 1;  
  60.         } else {  
  61.             return 0;  
  62.         }  
  63.        };  
  64. }  
 

Html

[c-sharp]  view plain copy
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <HTML>  
  3.  <HEAD>  
  4.   <TITLE> New Document </TITLE>  
  5.   <mce:script src="D:/IDE/sortable.js" mce_src="D://writeblog.csdn.net/IDE/sortable.js" type="text/javascript"></mce:script>  
  6.  </HEAD>  
  7.  <BODY>  
  8.  <p>Sortable demo:</p>  
  9.         <table border="1" id="tableId">  
  10.             <thead>  
  11.                 <tr>  
  12.                     <th οnclick="sortAble('tableId', 0)"    
  13.                          style="cursor:pointer" mce_style="cursor:pointer">name</th>  
  14.                     <th οnclick="sortAble('tableId', 1, 'date')"  
  15.                          style="cursor:pointer" mce_style="cursor:pointer">Birthday</th>  
  16.                     <th οnclick="sortAble('tableId', 2, 'int')"   
  17.                          style="cursor:pointer" mce_style="cursor:pointer">Age</th>  
  18.                 </tr>  
  19.             </thead>  
  20.             <tbody>  
  21.                 <tr>  
  22.                     <td>Ozone</td>  
  23.                     <td>01/12/1982</td>  
  24.                     <td>25</td>  
  25.                 </tr>  
  26.                 <tr>  
  27.                     <td>OnlyBlue3</td>  
  28.                     <td>10/24/1983</td>  
  29.                     <td>23</td>  
  30.                 </tr>  
  31.                 <tr>  
  32.                     <td>Momo</td>  
  33.                     <td>10/14/1999</td>  
  34.                     <td>8</td>  
  35.                 </tr>  
  36.             </tbody>  
  37.         </table>  
  38.     
  39.  </BODY>  
  40. </HTML>  
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值