iTakeo

表格排序。

表格排序(数字排序,字符串排序,日期排序)。

点击下面的表头查看效果。

工号 姓名 性别 时间
07 aaaa 2012-12-12
03 mmmm 2013-12-16
01 cccc 2014-12-12
04 ffff 2015-12-12
02 bbbb 2016-12-18
06 ssss 2008-10-07
05 tttt 2012-07-22

源码:

var tbody = document.querySelector('#tableSort').tBodies[0];
var th = document.querySelector('#tableSort').tHead.rows[0].cells;
var td = tbody.rows;
for (var i = 0;i < th.length;i++){
    th[i].flag = 1;
    th[i].onclick = function(){
        sort(this.getAttribute('data-type'),this.flag,this.cellIndex);
        this.flag = -this.flag;
    };
};
function sort(str,flag,n){
    var arr = [];  //存放DOM
    for (var i = 0;i < td.length;i++){
        arr.push(td[i]);
    };
    //排序
    arr.sort(function(a,b){
        return method(str,a.cells[n].innerHTML,b.cells[n].innerHTML) * flag;
    });
    //添加
    for (var i = 0;i < arr.length;i++){
        tbody.appendChild(arr[i]);
    };
};
//排序方法
function method(str,a,b){
    switch (str){
    case 'num':  //数字排序
        return a-b;
        break;
    case 'string':  //字符串排序
        return a.localeCompare(b);
        break;
    default:   //日期排序,IE8下'2012-12-12'这种格式无法设置时间,替换成'/'
        return new Date(a.split('-').join('/')).getTime()-new Date(b.split('-').join('/')).getTime();
    };
};
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
2016/02/19 0 / /
标签:  暂无标签

验证码: 8 + 4 =

回到顶部