无为清净楼资源网 Design By www.qnjia.com

本文实例讲述了js表头排序实现方法。分享给大家供大家参考。

具体实现方法如下:

复制代码 代码如下:
<script type="text/javascript">
    //是否递减排序
    var isDescending = true;
    /*****************************************
    * 要排序的行必须放到<tbody></tbody>标签中
    * tableId:排序表格ID
    * colNo:排序的列号,即第几列,从0开始
    * startRowNo:排序的开始行号,从0开始
    * sortLength:要排序的行数,
    * type:排序列的类型
    */
    function sort(tableId, colNo ,startRowNo, sortLength, type)
    {
        //如果要排序的行数是1或是0,则不对其进行排序操作
        if(sortLength<=1){
            return;
        }
        var currTable = document.getElementById(tableId);
        var theHeader = currTable.outerHTML.substring(0, currTable.outerHTML.indexOf('<TBODY>')+7)
        var theFooter = currTable.outerHTML.substring(currTable.outerHTML.indexOf('</TBODY>')-8);
        //这里的行数是去掉表头表头行和表位行的行数
        var theRows = new Array(sortLength);
        //对表中的数据进行循环
        for(i=startRowNo; i<sortLength+startRowNo; i++)
        {
            theRows[i-startRowNo] = new Array(currTable.rows[i].cells[colNo].innerText.toLowerCase(), currTable.rows[i].outerHTML);
        }
        if(type.toUpperCase()=='NUMBER')
        {
            theRows.sort(compareNumber);
        }
        else if(type.toUpperCase()=='DATE')
            theRows.sort(compareDate);
        else if(type.toUpperCase()=='STRING')
            theRows.sort(compareString);
        var tableInfo=''
        for(j=0; j<theRows.length; j++)
        {
            tableInfo+=theRows[j][1];
        }
        isDescending = !isDescending;
        currTable.outerHTML= theHeader + tableInfo +theFooter;
        return ;
    }
    //对数字进行比较
    function compareNumber(x, y)
    {
        //对货币格式的数据进行转化
        a = x[0].excludeChars(",").trim();
        b = y[0].excludeChars(",").trim();
 
        if(a==""){a=0;}
        if(b==""){b=0;}
            if(isDescending)
            {
                return parseFloat(b) - parseFloat(a);
            }
            else
            {
                return parseFloat(a) - parseFloat(b);
            }
    }
    //对字符串进行比较
    function compareString(x, y)
    {
            if(isDescending)
            {
                if(x[0]>y[0]) return -1;
                else if(x[0]<y[0]) return 1;
                else return 0;
            }
            else
            {
                if(x[0]<y[0]) return -1;
                else if(x[0]>y[0]) return 1;
                else return 0;
            }
    }
    //对时间进行比较
    function compareDate(x,y){
        var arr=x[0].split("-");
        var starttime=new Date(arr[0],arr[1],arr[2]);
        var starttimes=starttime.getTime();
        var arrs=y[0].split("-");
        var lktime=new Date(arrs[0],arrs[1],arrs[2]);
        var lktimes=lktime.getTime();
        
        if(isDescending)
        {
            return lktimes - starttimes;
        }
        else
        {
            return starttimes - lktimes;
        }
    }
    //去除字符串中所有指定的字符串
    String.prototype.excludeChars = function(chars){
         var matching = new RegExp(chars , "g") ;
         return this.replace(matching , '') ;
    }
</script>

希望本文所述对大家的javascript程序设计有所帮助。

标签:
js,表头,排序,方法

无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?