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执行顺序
Nov 09 Javascript
js中判断对象是否为空的三种实现方法
Dec 23 Javascript
js实现正方形颜色从下往上升的效果
Aug 04 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
Oct 10 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
Mar 24 Javascript
javascript 定时器工作原理分析
Dec 03 Javascript
bootstrap轮播图示例代码分享
May 17 Javascript
jQuery Dom元素操作技巧
Feb 04 jQuery
react配合antd组件实现的管理系统示例代码
Apr 24 Javascript
Vue中的作用域CSS和CSS模块的区别
Oct 09 Javascript
elementUI 设置input的只读或禁用的方法
Oct 30 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
Jul 05 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桌面中心(三) 修改数据库
2007/03/11 PHP
flash用php连接数据库的代码
2011/04/21 PHP
php计算整个目录大小的方法
2015/06/01 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
JS处理VBArray的函数使用说明
2008/05/11 Javascript
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
2018/07/06 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
Python类的基础入门知识
2008/11/24 Python
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
Java及python正则表达式详解
2017/12/27 Python
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
2014年元旦感言
2014/03/06 职场文书
自主招生推荐信范文
2014/05/10 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
干部个人对照检查材料
2014/08/25 职场文书
勇敢的心观后感
2015/06/09 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技
MySQL导致索引失效的几种情况
2022/06/25 MySQL