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 获取HTML DOM节点元素的方法小结
Apr 24 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
Dec 28 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
Jul 28 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 Javascript
浅析Node.js中的内存泄漏问题
Jun 23 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
Dec 24 Javascript
理解JavaScript中worker事件api
Dec 25 Javascript
移动端基础事件总结与应用
Jan 12 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
Jun 01 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
May 16 Javascript
详解小程序输入框闪烁及重影BUG解决方案
Aug 31 Javascript
微信小程序下拉框组件使用方法详解
Dec 28 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判断变量类型常用方法
2012/04/24 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
php导出生成word的方法
2015/12/25 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
python实现文本界面网络聊天室
2018/12/12 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
美国环保妈妈、儿童和婴儿用品购物网站:The Tot
2019/11/24 全球购物
大学生自我鉴定评语
2014/01/27 职场文书
法学院方阵解说词
2014/01/29 职场文书
《我的信念》教学反思
2014/02/15 职场文书
政风行风建设责任书
2014/07/23 职场文书
入股合作协议书
2014/10/12 职场文书
个人创业事迹材料
2014/12/30 职场文书
世界遗产的导游词
2015/02/13 职场文书
学期个人自我总结
2015/02/13 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
简单聊聊Golang中defer预计算参数
2022/03/25 Golang