在HTML中实现table表头点击升序/降序排序

题目:如下图,请实现表格信息的排序功能,当点击表头的属性区域,将表格信息进行排序切换功能,即第一次点击为降序排序,再一次点击进行升序排序。

姓名力量敏捷智力
德鲁伊172413
月之骑士152216
众神之王191520
流浪剑客231514

基本思路:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>html5</title>
    <style>

    </style>

    <!--不需要再次引用jquery-->
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
    <script>
        var tag=1;
        function sortNumberAS(a, b)
        {
            return a - b
        }
        function sortNumberDesc(a, b)
        {
            return b-a
        }

        function SortTable(obj){
            var td0s=document.getElementsByName("td0");
            var td1s=document.getElementsByName("td1");
            var td2s=document.getElementsByName("td2");
            var td3s=document.getElementsByName("td3");
            var tdArray0=[];
            var tdArray1=[];
            var tdArray2=[];
            var tdArray3=[];
            for(var i=0;i<td0s.length;i++){
                tdArray0.push(td0s[i].innerHTML);
            }
            for(var i=0;i<td1s.length;i++){
                tdArray1.push(parseInt(td1s[i].innerHTML));
            }
            for(var i=0;i<td2s.length;i++){
                tdArray2.push(parseInt(td2s[i].innerHTML));
            }
            for(var i=0;i<td3s.length;i++){
                tdArray3.push(parseInt(td3s[i].innerHTML));
            }
            var tds=document.getElementsByName("td"+obj.id.substr(2,1));
            var columnArray=[];
            for(var i=0;i<tds.length;i++){
                columnArray.push(parseInt(tds[i].innerHTML));
            }
            var orginArray=[];
            for(var i=0;i<columnArray.length;i++){
                orginArray.push(columnArray[i]);
            }
            if(obj.className=="as"){
                columnArray.sort(sortNumberAS);               //排序后的新值
                obj.className="desc";
            }else{
                columnArray.sort(sortNumberDesc);               //排序后的新值
                obj.className="as";
            }


            for(var i=0;i<columnArray.length;i++){
                for(var j=0;j<orginArray.length;j++){
                    if(orginArray[j]==columnArray[i]){
                        document.getElementsByName("td0")[i].innerHTML=tdArray0[j];
                        document.getElementsByName("td1")[i].innerHTML=tdArray1[j];
                        document.getElementsByName("td2")[i].innerHTML=tdArray2[j];
                        document.getElementsByName("td3")[i].innerHTML=tdArray3[j];
                        orginArray[j]=null;
                        break;
                    }
                }
            }
        }

    </script>

</head>

<body>

<table>
    <tr>
        <th>姓名</th>
        <th id="th1" onclick="SortTable(this)" class="as">力量</th>
        <th id="th2" onclick="SortTable(this)" class="as">敏捷</th>
        <th id="th3" onclick="SortTable(this)" class="as">智力</th>
    </tr>
    <tr>
        <td name="td0">德鲁伊</td>
        <td name="td1">17</td>
        <td name="td2">24</td>
        <td name="td3">13</td>
    </tr>
    <tr>
        <td name="td0">月之骑士</td>
        <td name="td1">15</td>
        <td name="td2">22</td>
        <td name="td3">16</td>
    </tr>
    <tr>
        <td name="td0">众神之王</td>
        <td name="td1">19</td>
        <td name="td2">15</td>
        <td name="td3">20</td>
    </tr>
    <tr>
        <td name="td0">流浪剑客</td>
        <td name="td1">23</td>
        <td name="td2">15</td>
        <td name="td3">14</td>
    </tr>
</table>

</body>
</html>

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值