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框架myJSFrame附API使用帮助
Jun 28 Javascript
JavaScript 拖拉缩放效果
Dec 10 Javascript
JS+CSS实现仿msn风格选项卡效果代码
Oct 22 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
Dec 08 Javascript
认识less和webstrom的less配置方法
Aug 02 Javascript
React-Native中props具体使用详解
Sep 04 Javascript
JS返回页面时自动回滚到历史浏览位置
Sep 26 Javascript
详解vue项目中调用百度地图API使用方法
Apr 25 Javascript
node.JS事件机制与events事件模块的使用方法详解
Feb 06 Javascript
浅谈js数组splice删除某个元素爬坑
Oct 14 Javascript
原生JavaScript实现留言板
Jan 10 Javascript
vue代码分块和懒加载非必要资源文件
Apr 11 Vue.js
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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
php 图像函数大举例(非原创)
2009/06/20 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
PHP二维数组去重算法
2016/12/17 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
python抓取网页中链接的静态图片
2018/01/29 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
linux环境下Django的安装配置详解
2019/07/22 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
详解Django配置优化方法
2019/11/18 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
大学活动总结格式
2014/04/29 职场文书
产品生产计划书
2014/05/07 职场文书
贫困证明书范文
2015/06/16 职场文书
Python实现双向链表
2022/05/25 Python