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与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
Mar 12 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
Jan 05 Javascript
批量实现面向对象的实例代码
Jul 01 Javascript
js实现瀑布流的一种简单方法实例分享
Nov 04 Javascript
jquery实现简单的轮换出现效果实例
Jul 23 Javascript
JavaScript验证Email(3种方法)
Sep 21 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
Mar 06 Javascript
RGB和YUV 多媒体编程基础详细介绍
Nov 04 Javascript
利用fecha进行JS日期处理
Nov 21 Javascript
JS实现商品筛选功能
Aug 19 Javascript
vue 表单验证按钮事件交由父组件触发的方法
Dec 17 Javascript
JS如何寻找数组中心索引过程解析
Jun 01 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
php读取目录所有文件信息dir示例
2014/03/18 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
记录Django开发心得
2014/07/16 Python
python实现堆栈与队列的方法
2015/01/15 Python
简述Python中的进程、线程、协程
2016/03/18 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
python里glob模块知识点总结
2021/01/05 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
大学生活动总结怎么写
2014/04/29 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书