排序列表

要求:1点击列头,可进行该列排序
2可进行升序和降序牌列的更换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>排序</title>
    <style>
        thead th{
            position: relative;
        }

        .onclick-asc:after{
            content: "";
            display: block;
            width: 6px;
            height: 6px;
            border-left: 3px solid #999;
            border-bottom: 3px solid #999;
            transform: rotate(-45deg);
            position: absolute;
            top: 4px;
            right: 18px;
        }
        .onclick-desc:after{
            content: "";
            display: block;
            width: 6px;
            height: 6px;
            border-left: 3px solid #999;
            border-bottom: 3px solid #999;
            transform: rotate(135deg);
            position: absolute;
            top: 8px;
            right: 18px;
        }
    </style>
</head>
<body>
    <table align="center" border="1" cellspacing="0" cellpadding="0" width="800">
            <thead>
                <tr>
                    <th>学号</th>
                    <th>姓名</th>
                    <th>语文</th>
                    <th>数学</th>
                    <th>英语</th>
                    <th>总分</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>1</td>
                    <td>张三</td>
                    <td>100</td>
                    <td>100</td>
                    <td>100</td>
                    <td>300</td>
                </tr>
                <tr>
                    <td>2</td>
                    <td>李四</td>
                    <td>98</td>
                    <td>82</td>
                    <td>90</td>
                    <td>270</td>
                </tr>
                <tr>
                    <td>3</td>
                    <td>王五</td>
                    <td>100</td>
                    <td>70</td>
                    <td>95</td>
                    <td>265</td>
                </tr>
                <tr>
                    <td>4</td>
                    <td>赵里</td>
                    <td>100</td>
                    <td>100</td>
                    <td>90</td>
                    <td>290</td>
                </tr>
                <tr>
                    <td>5</td>
                    <td>柳次</td>
                    <td>100</td>
                    <td>80</td>
                    <td>100</td>
                    <td>280</td>
                </tr>
                <tr>
                    <td>6</td>
                    <td>李希</td>
                    <td>85</td>
                    <td>85</td>
                    <td>85</td>
                    <td>255</td>
                </tr>
                <tr>
                    <td>7</td>
                    <td>陈久</td>
                    <td>95</td>
                    <td>95</td>
                    <td>95</td>
                    <td>285</td>
                </tr>
                <tr>
                    <td>8</td>
                    <td>Andy</td>
                    <td>94</td>
                    <td>94</td>
                    <td>94</td>
                    <td>282</td>
                </tr>
                <tr>
                    <td>9</td>
                    <td>Simon</td>
                    <td>80</td>
                    <td>80</td>
                    <td>80</td>
                    <td>240</td>
                </tr>
                <tr>
                    <td>10</td>
                    <td>Lilly</td>
                    <td>100</td>
                    <td>70</td>
                    <td>75</td>
                    <td>245</td>
                </tr>
            </tbody>
        </table>
</body>
<script>

    (function(){
        var oTd=document.querySelector('table').tHead.rows[0].children;
        var status='asc';
        for(var i = 0, length1 = oTd.length; i < length1; i++){
            var none;
            (function(j){
                oTd[i].style.cursor='pointer';

                oTd[j].onclick=function(){
                    status = status=='asc'?'desc':'asc';
                    for(var i= 0, length =oTd.length; i < length; i++){
                        oTd[i].className='';
                    };
                    if (status=='asc') {
                        status=='desc';
                        this.className='onclick-asc';
                    }else{
                        this.className='onclick-desc';
                    }
                    sort(j,status);
                };

            })(i);
        };
    })();
    function sort(index,status){
        var oTb1=document.querySelector('table');
        var ary=[];
        for(var i = 0, length1 = oTb1.tBodies[0].rows.length; i < length1; i++){
            ary.push(oTb1.tBodies[0].rows[i]);
        };
        ary.sort(function(o1,o2){
            var val1=o1.children[index].innerHTML;
            var val2=o2.children[index].innerHTML;
            if(index==1){
                var length=val1.length<val2.length?val1.length:val2.length;
                for(var i = 0; i < length; i++){
                    if(val1[i]=val2[i]){
                        continue;
                    }else{
                        if (status=='asc') {
                            return val2[i]>val1[i]?1:-1;
                        }else{
                            return val1[i]>val2[i]?1:-1;
                        };
                    };

                };
                return status=='asc'?val2.length-val1.length:val1.length-val2.length;
            };
            return status=='asc'? val2-val1:val1-val2;

        });
        for(var i = 0, length1 = ary.length; i < length1; i++){
            oTb1.tBodies[0].appendChild(ary[i]) ;
        };
    }
</script>   
</html>

效果图:

这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值