js表头排序实现方法


Posted in Javascript onJanuary 16, 2015

本文实例讲述了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程序设计有所帮助。

Javascript 相关文章推荐
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
Jun 14 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
Nov 08 Javascript
深入理解angularjs过滤器
May 25 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
Jun 03 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
Nov 02 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
Sep 14 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
Feb 05 Javascript
基于node简单实现RSA加解密的方法步骤
Mar 21 Javascript
区分vue-router的hash和history模式
Oct 03 Javascript
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
js计算任意值之间随机数的方法
Jan 16 #Javascript
jquery事件preventDefault()方法用法实例
Jan 16 #Javascript
jQuery老黄历完整实现方法
Jan 16 #Javascript
jquery中one()方法的用法实例
Jan 16 #Javascript
jquery中show()、hide()和toggle()用法实例
Jan 15 #Javascript
用js判断是否为360浏览器的实现代码
Jan 15 #Javascript
jquery果冻抖动效果实现方法
Jan 15 #Javascript
You might like
php中explode与split的区别介绍
2012/10/03 PHP
Smarty变量用法详解
2016/05/11 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Python中encode()方法的使用简介
2015/05/18 Python
python保存网页图片到本地的方法
2018/07/24 Python
python散点图实例之随机漫步
2018/08/27 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
python 函数内部修改外部变量的方法
2018/12/18 Python
django创建超级用户过程解析
2019/09/18 Python
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
高中毕业生自我鉴定
2013/11/03 职场文书
优秀生推荐信范文
2013/11/28 职场文书
后勤人员岗位职责
2013/12/17 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
个人投资计划书
2014/05/01 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
公司车辆管理制度
2015/08/04 职场文书
Python内置数据类型中的集合详解
2022/03/18 Python