web页面javascript表格排序

 
web页面javascript表格排序
 
以下的代码直接存为sortTable.js,在页面中包含: <script type="text/javascript" src="sortTable.js"></script> 
 
function ieOrFireFox(ob){      
     if (ob.textContent != null)     
     return ob.textContent;     
     var s = ob.innerText;     
     return s.substring(0, s.length);     
}      
      
//排序 tableId: 表的id,iCol:第几列 ;dataType:iCol对应的列显示数据的数据类型      
function sortAble(tableId, iCol, dataType){      
    var table = document.getElementById(tableId);     
    var tbody = table.tBodies[0];     
    var colRows = tbody.rows;     
    var aTrs = new Array;     
    //将将得到的列放入数组,备用      
    for (var i=0; i < colRows.length-1; i++) {     
         aTrs[i] = colRows[i+1];     
    }     
                                                 
 //判断上一次排列的列和现在需要排列的是否同一个。      
    if (table.sortCol == iCol) {     
        aTrs.reverse();     
    } else {     
     //如果不是同一列,使用数组的sort方法,传进排序函数      
         aTrs.sort(compareEle(iCol, dataType));     
    }              
    var oFragment = document.createDocumentFragment();     
                    
    for (var i=0; i < aTrs.length; i++) {     
        oFragment.appendChild(aTrs[i]);     
    }                     
    tbody.appendChild(oFragment);     
     //记录最后一次排序的列索引      
    table.sortCol = iCol;     
 }      
 //将列的类型转化成相应的可以排列的数据类型      
function convert(sValue, dataType) {      
     switch(dataType) {     
     case "int":     
         return parseInt(sValue);     
     case "float":     
         return parseFloat(sValue);     
     case "date":     
         return new Date(Date.parse(sValue));     
     default:     
         return sValue.toString();     
     }     
 }      
                  
 //排序函数,iCol表示列索引,dataType表示该列的数据类型      
function compareEle(iCol, dataType) {      
    return function (oTR1, oTR2) {     
         var vValue1 = convert(ieOrFireFox(oTR1.cells[iCol]), dataType);     
         var vValue2 = convert(ieOrFireFox(oTR2.cells[iCol]), dataType);     
         if (vValue1 < vValue2) {     
             return -1;     
         } else if (vValue1 > vValue2) {     
             return 1;     
         } else {     
             return 0;     
         }     
        };     
 }     
 
 
 
 
然后直接在页面中就可以使用排序方法了:
 
表格写法:
       <table width="96%" height="" border="0" id="tableId">
              <tr>                            
                     <th >日期</th>
                     <th οnclick="sortAble('tableId', 1)" style="cursor:pointer"> 某列</th>
                     <th οnclick="sortAble('tableId', 2)" style="cursor:pointer"> 某列</th>
      <th οnclick="sortAble('tableId', 3)" style="cursor:pointer"> 某列</th>
      <th >某列</th>
      <th >某列</th>
      <th οnclick="sortAble('tableId', 6, 'int')" style="cursor:pointer"> 某整数列</th>
              </tr>
              <tr>
              ...........................jsp循环生成列表数据
              </tr>
 </table>
 
 
甚至可以在页面初始化的时候调用排序方法:
例如: sortAble('tableId', 6, 'int');
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值