zoukankan      html  css  js  c++  java
  • 实现Table多列顺反排序(逆序)

    方法一:

    JS如下://保存为JScript1.js文件

    TableUtil.generateReverseCompareTRs = function(iCol)
    {
        return function compareTRs(oTR1,oTR2)
        {
            //var flag = document.getElementById("tempFlag").value;
           
            var sValue1 = oTR1.cells[iCol].firstChild.nodeValue;
            var sValue2 = oTR2.cells[iCol].firstChild.nodeValue;
          
            return sValue1.localeCompare(sValue2);       
        }
    }
    TableUtil.ReverseSortTable = function (sTableId,iCol)
    {
        var oTable = document.getElementById(sTableId);
        var oTbody = oTable.tBodies[0];
        var colDataRows = oTbody.rows;
        var aTRs = new Array;
       
        for(var i =0;i <colDataRows.length;i++)
        {
            aTRs[i]=colDataRows[i];
        }
        if(oTable.sortCol == iCol)
        {
            aTRs.reverse();
        }
        else
        {
            aTRs.sort(TableUtil.generateReverseCompareTRs(iCol));
        }
        var oFragment = document.createDocumentFragment();
        for(var i = 0;i <aTRs.length;i++)
        {
            oFragment.appendChild(aTRs[i]);
        }
        oTbody.appendChild(oFragment);
        oTable.sortCol = iCol;
    }
     

    HTML如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title></title>
         <script src="JScript1.js" type="text/javascript"></script>
    </head>
    <body>
        <table id="tblSort" border="1" sortCol="">
            <thead >
                <tr>
                    <th onclick="TableUtil.ReverseSortTable('tblSort',0)" style="cursor:pointer">Last Name</th>
                    <th onclick="TableUtil.ReverseSortTable('tblSort',1)" style="cursor:pointer">First Name</th>
                </tr>
            </thead>
           
            <tbody>
                <tr>
                    <td>Smith</td>
                    <td>Jhon</td>
                </tr>
                <tr>
                    <td>Johnson</td>
                    <td>Betty</td>
                </tr>
                <tr>
                    <td>Henderson</td>
                    <td>Nathan</td>
                </tr>
                <tr>
                    <td>Williams</td>
                    <td>James</td>
                </tr>
                <tr>
                    <td>Gilliam</td>
                    <td>Michael</td>
                </tr>
                <tr>
                    <td>Walker</td>
                    <td>Matthew</td>
                </tr>
                <tr>
                    <td>Vihone</td>
                    <td>He</td>
                </tr>
                <tr>
                    <td>Maggie</td>
                    <td>Yang</td>
                </tr>
                <tr>
                    <td>Zhiyi</td>
                    <td>Lin</td>
                </tr>
                <tr>
                    <td>Alex</td>
                    <td>Lee</td>
                </tr>            
            </tbody>        
        </table>   
    </body>
    </html>

    方法二:

    JS如下:

     var TableUtil = new Object();
    TableUtil.generateCompareTRs = function(iCol,flag)
    {
        return function compareTRs(oTR1,oTR2)
        {                
            var sValue1 = oTR1.cells[iCol].firstChild.nodeValue;
            var sValue2 = oTR2.cells[iCol].firstChild.nodeValue;
          
            if(flag==0)
            {
                 return sValue1.localeCompare(sValue2);        
            }
            if(flag ==1)
            {
                return -sValue1.localeCompare(sValue2);       
            }
        }
    }

    TableUtil.sortMultiColTable = function(sTableId,iCol)
    {
        var oTable = document.getElementById(sTableId);
        var oTbody = oTable.tBodies[0];
        var colDataRows = oTbody.rows;
        var aTRs = new Array;
       
        for(var i = 0; i <colDataRows.length; i++)
        {
            aTRs[i]=colDataRows[i];
        }
       
        var flag = document.getElementById("tempFlag").value ;
       
        aTRs.sort(TableUtil.generateCompareTRs(iCol,flag)); 
       
        var oFragment = document.createDocumentFragment();
        for(var i=0; i <aTRs.length;i++)
        {
            oFragment.appendChild(aTRs[i]);
        }
        oTbody.appendChild(oFragment);  
       
        if(flag==0)
        {
            flag = 1;
        }
        else if(flag == 1)
        {
            flag = 0;
        }
        document.getElementById("tempFlag").value = flag;
    }

    HTML如下:

     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title></title>
         <script src="JScript1.js" type="text/javascript"></script>
    </head>
    <body>
        <table id="tblSort" border="1">
            <thead >
                <tr>
                    <th onclick="TableUtil.sortMultiColTable('tblSort',0)" style="cursor:pointer">Last Name</th>
                    <th onclick="TableUtil.sortMultiColTable('tblSort',1)" style="cursor:pointer">First Name</th>
                </tr>
            </thead>
           
            <tbody>
                <tr>
                    <td>Smith</td>
                    <td>Jhon</td>
                </tr>
                <tr>
                    <td>Johnson</td>
                    <td>Betty</td>
                </tr>
                <tr>
                    <td>Henderson</td>
                    <td>Nathan</td>
                </tr>
                <tr>
                    <td>Williams</td>
                    <td>James</td>
                </tr>
                <tr>
                    <td>Gilliam</td>
                    <td>Michael</td>
                </tr>
                <tr>
                    <td>Walker</td>
                    <td>Matthew</td>
                </tr>
                <tr>
                    <td>Vihone</td>
                    <td>He</td>
                </tr>
                <tr>
                    <td>Maggie</td>
                    <td>Yang</td>
                </tr>
                <tr>
                    <td>Zhiyi</td>
                    <td>Lin</td>
                </tr>
                <tr>
                    <td>Alex</td>
                    <td>Lee</td>
                </tr>
               
            </tbody>
           
        </table>
        <input type="hidden" value="0" id="tempFlag" />
    </body>
    </html>

  • 相关阅读:
    关于lockkeyword
    关于多层for循环迭代的效率优化问题
    Android 面试精华题目总结
    Linux基础回想(1)——Linux系统概述
    linux源代码编译安装OpenCV
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem B. Matrix Fast Power
    校赛热身 Problem B. Matrix Fast Power
    集合的划分(递推)
  • 原文地址:https://www.cnblogs.com/vihone/p/1887382.html
Copyright © 2011-2022 走看看