实现Table多类间不同类型的顺反(逆序)排序

本文介绍了一个使用JavaScript实现的表格排序功能,能够根据不同数据类型(整数、浮点数、日期)进行升序排列,并通过示例代码展示了具体实现过程。

JS如下:

 

TableUtil.Convert = function(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();           
    }
}

TableUtil.generateCompareTypeTRs = function(iCol,sDataType)
{
    return function compareTypeTRs(oTR1,oTR2)
    {
        var vValue1 = TableUtil.Convert(oTR1.cells[iCol].firstChild.nodeValue,sDataType);
        var vValue2 = TableUtil.Convert(oTR2.cells[iCol].firstChild.nodeValue,sDataType);
        if(vValue1<vValue2)
        {
            return -1;
        }
        else if(vValue1>vValue2)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
}

TableUtil.sortTypeTable = function(sTableId,iCol,sDataType)
{
    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.generateCompareTypeTRs(iCol,sDataType));
    }
    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.sortTypeTable('tblSort',0)" style="cursor:pointer">Last Name</th>
                <th onclick="TableUtil.sortTypeTable('tblSort',1)" style="cursor:pointer">First Name</th>
                <th onclick="TableUtil.sortTypeTable('tblSort',2,'date')" style="cursor:pointer">Birthday</th>
                <th onclick="TableUtil.sortTypeTable('tblSort',3,'int')" style="cursor:pointer">Siblings</th>
            </tr>
        </thead>
       
        <tbody>
            <tr>
                <td>Smith</td>
                <td>Jhon</td>
                <td>7/12/1978</td>
                <td>2</td>
            </tr>
            <tr>
                <td>Johnson</td>
                <td>Betty</td>
                <td>10/15/1977</td>
                <td>4</td>
            </tr>
            <tr>
                <td>Henderson</td>
                <td>Nathan</td>
                <td>2/25/1977</td>
                <td>4</td>
            </tr>
            <tr>
                <td>Williams</td>
                <td>James</td>
                <td>7/8/1980</td>
                <td>4</td>
            </tr>
            <tr>
                <td>Gilliam</td>
                <td>Michael</td>
                <td>7/22/1949</td>
                <td>4</td>
            </tr>
            <tr>
                <td>Walker</td>
                <td>Matthew</td>
                <td>1/14/2000</td>
                <td>3</td>
            </tr>
            <tr>
                <td>Vihone</td>
                <td>He</td>
                <td>11/5/1983</td>
                <td>3</td>
            </tr>
            <tr>
                <td>Maggie</td>
                <td>Yang</td>
                <td>9/23/1984</td>
                <td>3</td>
            </tr>
            <tr>
                <td>Zhiyi</td>
                <td>Lin</td>
                <td>12/5/1988</td>
                <td>2</td>
            </tr>
            <tr>
                <td>Alex</td>
                <td>Lee</td>
                <td>7/12/1984</td>
                <td>4</td>
            </tr>
           
        </tbody>
       
    </table>   
</body>
</html>

转载于:https://www.cnblogs.com/vihone/archive/2010/11/26/1888897.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值