简单的js表格排序 (归总)

1.简单的js 排序
  <html>
     <head>
         <title>SortTable2</title>
         <meta http-equiv="content-type" content="text/html; charset=UTF-8">
         <script type="text/javascript">
var k=0;

         function sortTable(sTableId,iCol,sDataType){
             var oTable=document.getElementByIdx(sTableId);//获取表格的ID
             var oTbody=oTable.tBodies[0]; //获取表格的tbody
             var colDataRows=oTbody.rows; //获取tbody里的所有行的引用
             var aTRs=new Array(); //定义aTRs数组用于存放tbody里的行
             for(var i=0;i<colDataRows.length;i++){//依次把所有行放如aTRs数组
               aTRs.push(colDataRows[i]);
             }
             
             if(oTable.sortCol==iCol){//非首次排序
             aTRs.reverse();
             }
             else{ //首次排序
             if(k%2==0){//升序
             aTRs.sort(generateCompareTRs(iCol,sDataType));
}
             else if(k%2==1)//降序
             {
aTRs.sort(generateCompareTRs1(iCol,sDataType));
}
             }
                     
             var oFragment=document.createDocumentFragment();//创建文档碎片/
             for(var i=0;i<aTRs.length;i++){ //把排序过的aTRs数组成员依次添加到文档碎片
             oFragment.appendChild(aTRs[i]);
             }
           oTbody.appendChild(oFragment); //把文档碎片添加到tbody,完成排序后的显示更新
             oTable.sortCol=iCol;//把当前列号赋值给sortCol,以此来区分首次排序和非首次排序,//sortCol的默认值为-1
         };
             //比较函数,用于两项之间的排序
//升序
         function generateCompareTRs(iCol,sDataType){
             return     function compareTRs(oTR1,oTR2){
                                   var vValue1=convert(oTR1.cells[iCol].firstChild.nodeValue,sDataType);
                                   var vValue2=convert(oTR2.cells[iCol].firstChild.nodeValue,sDataType);
                                   if(vValue1<vValue2){
                                   return -1;
                                   }
                                   else if(vValue1>vValue2){
                                   return 1;
                                   }
                                   else{
                                   return 0;
                                   }
                               };
         };
//
//降序
         function generateCompareTRs1(iCol,sDataType){
             return     function compareTRs(oTR1,oTR2){
                                   var vValue1=convert(oTR1.cells[iCol].firstChild.nodeValue,sDataType);
                                   var vValue2=convert(oTR2.cells[iCol].firstChild.nodeValue,sDataType);
                                   if(vValue1>vValue2){
                                   return -1;
                                   }
                                   else if(vValue1<vValue2){
                                   return 1;
                                   }
                                   else{
                                   return 0;
                                   }
                               };
         };
//
           //数据类型转换函数
         function convert(sValue,sDataType){
         switch(sDataType){
                 case "int":return parseInt(sValue);
                 case "float": return parseFloat(sValue);
                 case "date":return new Date(Date.parse(sValue));
                 default:return sValue.toString();
               }
         };
         </script>
     </head>
     <body>
         <form name="f1" id="f1" action="" method="post">
         <table border="1" id="tblSort" sortCol="-1">
               <thead>
                   <tr>
                     <th onClick="sortTable('tblSort',0);" style="cursor:pointer">Last Name</th>
                     <th onClick="sortTable('tblSort',1)" style="cursor:pointer">First Name</th>
                     <th onClick="sortTable('tblSort',2,'date')" style="cursor:pointer">Birthday</th>
                     <th onClick="sortTable('tblSort',3,'int')" style="cursor:pointer">Silbings</th>
                   </tr>
               </thead>
               <tbody>
                   <tr>
                       <td>Simth</td>
                       <td>John</td>
                       <td>7/12/1978</td>
                       <td>2</td>
                   </tr>
                   <tr>
                       <td>Johnson</td>
                       <td>Betty</td>
                       <td>5/12/1965</td>
                       <td>5</td>
                   </tr>
                   <tr>
                       <td>Henderson</td>
                       <td>Nathan</td>
                       <td>10/15/1977</td>
                       <td>3</td>
                   </tr>
                   <tr>
                       <td>Willianms</td>
                       <td>James</td>
                       <td>2/25/1949</td>
                       <td>1</td>
                   </tr>
                   <tr>
                       <td>Gilliam</td>
                       <td>Michael</td>
                       <td>7/8/1980</td>
                       <td>4</td>
                   </tr>
                   <tr>
                       <td>Walker</td>
                       <td>Matthew</td>
                       <td>6/18/1981</td>
                       <td>3</td>
                   </tr>
               </tbody>       
         </table>
       </form>
     </body>
</html>
   
 
2.介绍一个免费版本且模块话的  (但时间排序为按月排序且忽略年份,需要修改源码)
 
 
另外介绍 

1. sortabe.js 最简单的,我现在试用的就是这个,加载JS后给TABLE加上class=”sortable”就OK了,点击<th>相应栏目就可以排序~~

类似与这个js类库 还有一个说明文档,操作一样,都是添加TABLE加上class=”sortable"

(http://www.kryogenix.org/code/browser/sorttable/)

<html> 
    <head> 
    <title>Table Sort Example</title> 
        <script src="sorttable.js" type="text/javascript"></script>
 
    </head> 
    <body>         
    <table class="sortable" id="mytable" cellspacing="3" cellpadding="0" width="481" border="1">
        <tbody>
            <tr>
                <th width="165">Name</th>
                <th width="101">Salary</th>
                <th align="center" width="101">Extension</th>
                <th align="center" width="99">Start date</th>
            </tr>
            <tr>
                <td>Bloggs, Fred</td>
                <td>$12000.00</td>
                <td align="center">1353</td>
                <td align="center">18/08/2003</td>
            </tr>
            <tr>
                <td>Turvey, Kevin</td>
                <td>$191200.00</td>
                <td align="center">2342</td>
                <td align="center">02/05/1979</td>
            </tr>
            <tr>
                <td>Mbogo, Arnold</td>
                <td>$32010.12</td>
                <td align="center">2755</td>
                <td align="center">09/08/1998</td>
            </tr>
            <tr>
                <td>Shakespeare, Bill</td>
                <td>$122000.00</td>
                <td align="center">3211</td>
                <td align="center">12/11/1961</td>
            </tr>
            <tr>
                <td>Shakespeare, Hamnet</td>
                <td>$9000</td>
                <td align="center">9005</td>
                <td align="center">01/01/2002</td>
            </tr>
            <tr>
                <td>Fitz, Marvin</td>
                <td>$3300</td>
                <td align="center">5554</td>
                <td align="center">22/05/1995</td>
            </tr>
        </tbody>
    </table>  
    </body> 
</html>

 

 

2. DrasticGrid AJAX应用,与MySQL结合可以实现分页、排序、编辑以及增删功能,太强大了,图里可以看到滚动条的分页效果

sort2.jpg

3. Ingrid 这个是Jquery的应用,样子我最喜欢的了,而且列宽可以拖动调节,分页及排序都有LOADING效果的sort3.jpg

4. Tablesorter 同样是Jquery应用,样子不错,还可以设置初始排序条件sort6.jpg

5. TableSorter Jquery应用,可以在JS调用里做出各种样式设置,作者写的很具体sort5.jpg

6. Table Sorting Jquery应用,可以对N个TBODY分别排序,可分页,可根据条件筛选显示内容,数据量大时,比其他相同应用速度要快,这个是作者说滴,还给了个500行的例子sort4.jpg

7. TableSort (revisited) 功能好~强大,作者的说明页面好~长,请细心查看~sort7.jpg

表格排序有好多好多方法啊,MOO啊PROTO啊YUI啊一堆一堆的,不过我暂时还只能看看Jquery相关,已经眼花了都。。。
虽然现在试用第一种,不过还是第三个最中意,说不定换换玩~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值