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函数中的arguments参数
Aug 01 Javascript
jQuery下通过replace字符串替换实现大小图片切换
May 22 Javascript
jquery的ajax简单结构示例代码
Feb 17 Javascript
js自动查找select下拉的菜单并选择(示例代码)
Feb 26 Javascript
js的image onload事件使用遇到的问题
Jul 15 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
Feb 20 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
Sep 25 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
Oct 20 jQuery
浅谈Node.js爬虫之网页请求模块
Jan 11 Javascript
JS同步、异步、延迟加载的方法
May 05 Javascript
vue实现同一个页面可以有多个router-view的方法
Sep 20 Javascript
js实现图片放大并跟随鼠标移动特效
Jan 18 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/06 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
浅析PHP 按位与或 (^ 、&amp;)
2013/06/21 PHP
PHP文件与目录操作示例
2016/12/24 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
Node.JS如何实现JWT原理
2020/09/18 Javascript
python 文本单词提取和词频统计的实例
2018/12/22 Python
Python元组常见操作示例
2019/02/19 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
python如何统计代码运行的时长
2019/07/24 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
解决Python对齐文本字符串问题
2019/08/28 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
Python pip配置国内源的方法
2020/02/14 Python
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
大学毕业生通用自我评价
2014/01/05 职场文书
演讲主持词
2014/03/18 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
公司出纳岗位职责
2015/03/31 职场文书
企业计划生育责任书
2015/05/09 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫
Python安装使用Scrapy框架
2022/04/12 Python