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 DOM学习第八章 表单错误提示
Feb 19 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
Nov 27 Javascript
window.open 以post方式传递参数示例代码
Feb 27 Javascript
一个JavaScript防止表单重复提交的实例
Oct 21 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
Jan 09 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
Sep 26 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
Mar 30 Javascript
ES6扩展运算符的用途实例详解
Aug 20 Javascript
在微信小程序里使用watch和computed的方法
Aug 02 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
Aug 31 Javascript
vue+axios+element ui 实现全局loading加载示例
Sep 11 Javascript
js事件机制----捕获与冒泡机制实例分析
May 22 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
python进程与线程小结实例分析
2018/11/11 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
Dom与浏览器兼容性说明
2010/10/25 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
2018/07/31 jQuery
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
Python中的十大图像处理工具(小结)
2019/06/10 Python
python处理“
2019/06/10 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
自动化专业毕业生自荐信
2013/11/01 职场文书
保荐人的岗位职责
2013/11/19 职场文书
学习十八大报告感言
2014/02/28 职场文书
高一学生评语大全
2014/04/25 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
继承公证书格式
2015/01/26 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js