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版的date函数(和PHP的date函数一样)
May 12 Javascript
JS表的模拟方法
Feb 05 Javascript
浅析JavaScript动画
Jun 10 Javascript
Ubuntu系统下Angularjs开发环境安装
Sep 01 Javascript
jquery中用jsonp实现搜索框功能
Oct 18 Javascript
使用DeviceOne实现微信小程序功能
Dec 29 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
Aug 11 Javascript
vuejs实现递归树型菜单组件
Jan 13 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
Nov 05 Javascript
javascript中如何判断类型汇总
May 14 Javascript
vue-loader中引入模板预处理器的实现
Sep 04 Javascript
js+h5 canvas实现图片验证码
Oct 11 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使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
php中错误处理操作实例分析
2019/08/23 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
Python AES加密实例解析
2018/01/18 Python
让Django支持Sql Server作后端数据库的方法
2018/05/29 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
UDP协议功能
2013/01/06 面试题
飞机制造技术专业求职信
2014/07/27 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
javaScript Array api梳理
2021/03/31 Javascript
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers