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实现的动态增加表格示例自己写的
Oct 21 Javascript
jquery中的查找parents与closest方法之间的区别
Dec 02 Javascript
js性能优化技巧
Nov 29 Javascript
Node.js中文件操作模块File System的详细介绍
Jan 05 Javascript
微信小程序 UI与容器组件总结
Feb 21 Javascript
jquery将标签元素的高设为屏幕的百分比
Apr 19 jQuery
vue2.0与bootstrap3实现列表分页效果
Nov 28 Javascript
利用vue.js实现被选中状态的改变方法
Feb 08 Javascript
chosen实现省市区三级联动
Aug 16 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
Jul 06 Javascript
JS数组进阶示例【数组的几种函数用法】
Jan 16 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
Nov 17 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站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
thinkphp普通查询与表达式查询实例分析
2014/11/24 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
Python实现全局变量的两个解决方法
2014/07/03 Python
python实现多线程网页下载器
2018/04/15 Python
Python之循环结构
2019/01/15 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
大学自我鉴定范文
2013/12/26 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
怎样填写就业意向
2014/04/02 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
节约用电标语
2014/06/17 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
初中英语教学随笔
2015/08/15 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL