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 相关文章推荐
jquery自动完成插件(autocomplete)应用之PHP版
Dec 15 Javascript
28个JS验证函数收集
Mar 02 Javascript
jquery自动切换tabs选项卡的具体实现
Dec 24 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
May 02 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
Jul 21 Javascript
jQuery实现的网页竖向菜单效果代码
Aug 26 Javascript
整理关于Bootstrap导航的慕课笔记
Mar 29 Javascript
vue服务端渲染的实例代码
Aug 28 Javascript
Nuxt.js实战和配置详解
Aug 05 Javascript
Javascript模拟实现new原理解析
Mar 03 Javascript
vue data对象重新赋值无效(未更改)的解决方式
Jul 24 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
Nov 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 current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
HTML中事件触发列表与解说
2007/07/09 Javascript
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
python 自动提交和抓取网页
2009/07/13 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
Django开发中的日志输出的方法
2018/07/02 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
从python读取sql的实例方法
2020/07/21 Python
python文件排序的方法总结
2020/09/13 Python
使用索引有什么好处
2016/07/27 面试题
初中新生军训方案
2014/05/13 职场文书
党代会心得体会
2014/09/04 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
七一活动主持词
2015/06/29 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
导游词之张家界
2019/10/31 职场文书