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 相关文章推荐
Js中sort()方法的用法
Nov 04 Javascript
关于textarea提交的内容无法换行的解决办法
Apr 09 Javascript
js获取指定字符前/后的字符串简单实例
Oct 27 Javascript
最常见的左侧分类菜单栏jQuery实现代码
Nov 28 Javascript
jQuery实现的浮动层div浏览器居中显示效果
Feb 03 Javascript
JavaScript获取ul中li个数的方法
Feb 13 Javascript
Angular2开发——组件规划篇
Mar 28 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
Angular 容器部署的方法
Apr 17 Javascript
react中实现搜索结果中关键词高亮显示
Jul 31 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 jQuery
vantUI 获得piker选中值的自定义ID操作
Nov 04 Javascript
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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
Smarty+QUICKFORM小小演示
2007/02/25 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
PHP-Java-Bridge使用笔记
2014/09/22 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
菜鸟javascript基础整理1
2010/12/06 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
vue计算属性get和set用法示例
2019/02/08 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
Python优先队列实现方法示例
2017/09/21 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
python Gabor滤波器讲解
2020/10/26 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
IRO美国官网:法国服装品牌
2018/03/06 全球购物
小学生手册家长评语
2014/04/16 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
法定代表人证明书
2014/11/28 职场文书