js实现表格操作-排序

用js实现表格操作,点击th,则根据该th所属列的数据排序,点击一次降序,第二次点击升序。

表格代码:

<table>
<thead>
    <tr>
        <th>姓名</th>
        <th>力量</th>
        <th>敏捷</th>
        <th>实力</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td>德鲁伊</td>
        <td>17</td>
        <td>24</td>
        <td>13</td>
    </tr>
    <tr>
        <td>德神之王</td>
        <td>19</td>
        <td>15</td>
        <td>20</td>
    </tr>
    <tr>
        <td>月之骑士</td>
        <td>15</td>
        <td>22</td>
        <td>16</td>
    </tr>
    <tr>
        <td>德鲁剑客</td>
        <td>23</td>
        <td>15</td>
        <td>14</td>
    </tr>
</tbody>
</table>

js代码:

window.onload=function(){
        var tbody=document.getElementsByTagName('tbody');
        var th=document.getElementsByTagName('th');
        var r=tbody[0].rows.length;
        var c=tbody[0].rows[0].cells.length;
        var arr2=[];
        for(var i=0;i<r;i++){
                arr2[i]=tbody[0].rows[i];

        }
        for(var i=0;i<th.length;i++){
                (function(n){
                    var count=0;//记录点击次数
                    th[i].onclick=function(){

                    if(count==0){
                        if(n==0){
                        strSortUp(arr2,n);

                        }
                        sortUp(arr2,n);
                        count=1;
                    }else{
                        if(n==0){
                        strSortDown(arr2,n);
                        }
                        sortDown(arr2,n);
                        count=0;
                        }
                        var str="";
                        var html="";
                        for(var k=0;k<arr2.length;k++){
                            for(var j=0;j<c;j++){
                            str+="<td>"+arr2[k].children[j].innerText+"</td>";
                            }
                            html+="<tr>"+str+"</tr>";
                            str="";

                        }
                        tbody[0].innerHTML=html;
                    }


                })(i);

                }
    }
    //数字降序
    function sortUp(arr,n){
        arr.sort(function(a,b){
                                return a.children[n].innerText-b.children[n].innerText;
        });
    }
    //数字升序
    function sortDown(arr,n){
        arr.sort(function(a,b){
                                return b.children[n].innerText-a.children[n].innerText;
        });
    }
    //字符串降序
    function strSortUp(arr,n){
        var i=0;
        arr.sort(function(a,b){
            return  a.children[n].innerText.localeCompare(b.children[n].innerText);
        });

    }
//字符串降升序
    function strSortDown(arr,n){
        arr.sort(function(a,b){
                        return  -(a.children[n].innerText.localeCompare(b.children[n].innerText));
                                });
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值