对多列表格进行排序,并对不同数据进行排序

本文介绍了一个使用JavaScript实现的表格排序功能,可以根据不同的数据类型(整数、浮点数、日期)进行升序排列。通过简单的点击TH元素即可实现相应列的排序。
JavaScript代码如下:

function convert(sValue, sDataType)
{
    switch(sDataType)
    {
        case "int":
            return parseInt(sValue);
        case "float":
            return parseFloat(sValue);
        case "date":
            return new Date(Date.parse(sValue));
        defaule:
            return sValue.toString();
    }
}

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 sortTable(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];
    aTRs.sort(generateCompareTRs(iCol, sDataType));
    var oFragment = document.createDocumentFragment();
    for(var i = 0; i < aTRs.length; i++)
        oFragment.appendChild(aTRs[i]);
    oTBody.appendChild(oFragment);
    oTBody.sortCol = iCol;



举例
<table border="1" id="talsort">
  <thead>
    <tr>
      <th onclick="sortTable('tblsort', 0)">Name</th>
      <th onclick="sortTable('tblsort', 1, 'date')">Birthday</th>
      <th onclick="sortTable('tblsort', 2, 'int')">Siblings</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>smith</td>
      <td>7/12/1978</td>
      <td>2</td>
    </tr>
    <tr>
      <td>white</td>
      <td>5/9/1973</td>
      <td>4</td>
    </tr>
  </tbody>
</table>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值