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 相关文章推荐
javascript的tab切换原理与效果实现方法
Jan 10 Javascript
jQuery获取DOM节点实例分析(2种方式)
Dec 15 Javascript
js通过指定下标或指定元素进行删除数组的实例
Jan 12 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
Aug 16 Javascript
基于JavaScript实现表格滚动分页
Nov 22 Javascript
微信小程序使用modal组件弹出对话框功能示例
Nov 29 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
Jul 07 Javascript
微信小程序实现留言板(Storage)
Nov 02 Javascript
react 原生实现头像滚动播放的示例
Apr 21 Javascript
详解JavaScript 的执行机制
Sep 18 Javascript
JavaScript实现瀑布流布局的3种方式
Dec 27 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
zend框架实现支持sql server的操作方法
2016/12/08 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
JS中类或对象的定义说明
2014/03/10 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
Python程序语言快速上手教程
2012/07/18 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
Django之腾讯云短信的实现
2020/06/12 Python
python+requests实现接口测试的完整步骤
2020/10/27 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
2014学雷锋活动总结
2014/03/09 职场文书
一体化教学实施方案
2014/05/10 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
我爱我班主题班会
2015/08/13 职场文书