js 处理表格排序(中英文)

<! DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.01   Transitional//EN"   
  "http://www.w3.org/TR/html4/loose.dtd"
>    
  
< html >    
  
< head >    
  
< title > Sort   table </ title >    
  
</ head >    
    
  
< script >    
  
<!--   
  
var   flag1,   flag2,   flag3;   
  flag1   
=   true;   
  flag2   
=   true;   
  flag3   
=   true;   
    
  
//clear   rows   for   table   
  function   clearAllRows(oTable){   
      
for(var i=oTable.rows.length-1;i>0;i--){   
        oTable.deleteRow(i);   
      }
   
  }
   

  
function   addRows(oTable,  Person){   
      
var   rowid =   oTable.rows.length;   
      
var   row   =   oTable.insertRow(rowid);   
        
      
var   cell=row.insertCell();   
      cell.innerText  
=  Person.getId();   
        
      
var   cell   =   row.insertCell();   
      cell.innerHTML   
=   Person.getName();   
        
      
var   cell=row.insertCell();   
      cell.innerHTML
=Person.getAge();   
  }
   


  
function   sortBy(index){   
      
var oTable = document.getElementById("t1");   
      
//get   data   from   table   
      var arr = new Array();   
    
      
//skip   the   first   row,   because   it   is   the   head   of   the   table   
      for(var i = 1;i < oTable.rows.length; i++){   
          
var   id   =   oTable.rows[i].cells[0].innerText;   
          
var   name =   oTable.rows[i].cells[1].innerText;   
          
var   age  =   oTable.rows[i].cells[2].innerText;   
          arr[i 
- 1]   =   new   Person(id,   name,   age);   
      }
   
    
        
//process   sort   
      switch(index){   
          
case   0:   
          
if(flag1){   
              
//sort   ascending   
              arr.sort(function(a,b){   
              
return   parseInt(a.getId())   -   parseInt(b.getId());   
              }
);   
              flag1   
=   false;   
          }
else{   
              
//sort   desc   
              arr.sort(function(a,b){   
              
return   parseInt(b.getId())   -   parseInt(a.getId());   
              }
);   
              flag1   
=   true;   
          }
   
          
break;   
          
case   1:  
              
if(flag2){
                arr.sort(
function(a,b){return a.getName().localeCompare(b.getName());});
                flag2   
=   false;   
              }
else{   
                  arr.sort(
function(a,b){return a.getName().localeCompare(b.getName());});
                  arr.reverse();
                  flag2   
=   true
              }
   
          
break;   
          
case   2:   
          
if(flag3){   
              arr.sort(
function(a,b){   
              
return   parseInt(a.getAge()) - parseInt(b.getAge());   
              }
);   
              flag3   
=   false;   
          }
else{   
          arr.sort(
function(a,b){   
          
return   parseInt(b.getAge()) - parseInt(a.getAge());   
          }
);   
          flag3   
=   true;   
          }
   
          
break;   
      }
   
    
  
//clear   the   all   rows   except   the   head   of   the   table   
  clearAllRows(oTable);   
    
  
//add   the   rows   
  for(var   i   =   0;   i   <   arr.length;   i++){   
     addRows(oTable,   arr[i]);   
  }
   
    
  }
   
  
function   Person(id,   name,   age){   
      
this.id   =   id;   
      
this.name   =   name;   
      
this.age   =   age;   
  }
   
  
new   Person('',   '',   '');   
  Person.prototype.getId   
= function()   {   return   this.id;}   
  Person.prototype.getName 
= function()   {   return   this.name;}   
  Person.prototype.getAge  
= function()   {   return   this.age;}   
  Person.prototype.toString 
=  function()   {   return   this.name;}   
    
  
-->   
  
</ script >    
  
< body    style ="font-size:12px   " >    
  
< table    width ="200"    border ="1"    id ="t1" >    
      
< tr >    
          
< td >< a    href ="javascript:sortBy(0)" > Id </ a ></ td >    
          
< td >< a    href ="javascript:sortBy(1)" > Name </ a ></ td >    
          
< td >< a    href ="javascript:sortBy(2)" > Age </ a ></ td >    
      
</ tr >    
      
< tr >    
          
< td > 1 </ td >    
          
< td > 语文 </ td >    
          
< td > 108 </ td >    
      
</ tr >    
      
< tr >    
          
< td > 2 </ td >    
          
< td > 数学 </ td >    
          
< td > 40 </ td >    
      
</ tr >    
      
< tr >    
      
< td > 3 </ td >    
          
< td > 化学 </ td >    
          
< td > 58 </ td >            
      
</ tr >    
      
< tr >    
          
< td > 4 </ td >    
          
< td > 地理 </ td >    
          
< td > 22 </ td >    
      
</ tr >    
  
</ table >    
    
  
</ body >    
  
</ html >    

 

说明 数组默认的排序方法不能按照中文拼音字母顺序排序,这里使用新方法locateCompare进行处理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值