javascript table 列排序

ExpandedBlockStart.gif 代码
< script language = " javascript " >    
  
// 按列和列数据类型排序表格   
function  sortTable(tableID, iCol, dataType){   
 
    
var  docFrag  =  document.createDocumentFragment();     // 创建文档碎片   
 
    
var  sortArr  =  getSortTRs(tableID, iCol, dataType);         
  
    
for ( var  i = 0 ; i < sortArr.length; i ++ ){            
 
        docFrag.appendChild(sortArr[i]);           
 
  }          
  
   
var  oTable  =  document.getElementById(tableID);   
  
   oTable.tBodies[
0 ].appendChild(docFrag);   
 
    oTable.sortCol 
=  iCol;   
  
}          
  
// 返回排序后的行   
function  getSortTRs(tableID, iCol, dataType){   
    
var  trArr  =   new  Array;   
    
var  oTable  =  document.getElementById(tableID);   
    
var  rows  =  oTable.tBodies[ 0 ].rows;   
    
for ( var  i = 0 ; i < rows.length; i ++ ){   
        trArr[i] 
=  rows[i];   
    }   
   
if (oTable.sortCol  ==  iCol){   
       trArr.reverse();   
    }
else {   
       trArr.sort(compareTRs(iCol, dataType));   
    }   
    
return  trArr;   
}   
function  compareTRs(iCol, dataType){   
    
return   function  compare(tr1, tr2){   
       
var  value1  =  convert(tr1.cells[iCol].firstChild.nodeValue, dataType);   
       
var  value2  =  convert(tr2.cells[iCol].firstChild.nodeValue, dataType);   
 
       
if (value1  <  value2){   
            
return   - 1 ;   
        }
else   if ( value1  >  value2 ){   
           
return   1 ;   
        }
else {   
            
return   0 ;   
       }   
    }          
}   
function  convert(value, dataType){   
   
switch (dataType){   
       
case   " int " return  parseInt(value);   
        
case   " float " :    return  parseFloat(value);   
       
case   " date " :     return   new  Date(Date.parse(value));   
        
default :     return  value.toString();   
        }
        }

< / script>   
ExpandedBlockStart.gif 代码
  < table  border ="1"  id ="sortTable" >     < thead >   
   
< tr  background ="blue" >   
           
< td  onmouseover ="javascript:this.style.cursor = 'hand'"  onclick ="sortTable('sortTable', 0, 'string');" > 字符串排序 </ td >           
 
            
< td  onmouseover ="javascript:this.style.cursor = 'hand'"  onclick ="sortTable('sortTable', 1, 'int');" > 数字排序 </ td >   
 
        
</ tr >   
      
</ thead >   
 
       
< tr >< td > 李康 </ td >< td > 3 </ td ></ tr >   
 
        
< tr >< td > 李洁 </ td >< td > 4 </ td ></ tr >   
 
      
< tr >< td > 李康 </ td >< td > 3 </ td ></ tr >   
 
       
< tr >< td > 朱敏健 </ td >< td > 8 </ td ></ tr >   
 
      
< tr >< td > 朱洁 </ td >< td > 7 </ td ></ tr >   
 
       
< tr >< td > 杨乐勇 </ td >< td > 5 </ td ></ tr >   
   
</ table >   

 


 

转载于:https://www.cnblogs.com/zhangqifeng/archive/2011/01/17/1937789.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值