js实现表格字段排序


Posted in Javascript onFebruary 19, 2014

1.比较函数生成器:

/**
 * 比较函数生成器
 * 
 * @param iCol
 *            数据行数
 * @param sDataType
 *            该行的数据类型
 * @return
 */
function  generateCompareTRs(iCol, sDataType) {
     return   function  compareTRs(oTR1, oTR2) {
        vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
        vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
         if  (vValue1 < vValue2) {
             return  -1;
        }  else   if  (vValue1 > vValue2) {
             return  1;
        }  else  {
             return  0;
        }
    };
}

2.处理比较字符类型:
/**
 * 处理排序的字段类型
 * 
 * @param sValue
 *            字段值 默认为字符类型即比较ASCII码
 * @param sDataType
 *            字段类型 对于date只支持格式为mm/dd/yyyy或mmmm dd,yyyy(January 12,2004)
 * @return
 */
function  convert(sValue, sDataType) {
     switch  (sDataType) {
     case   "int" :
         return  parseInt(sValue);
     case   "float" :
         return  parseFloat(sValue);
     case   "date" :
         return   new  Date(Date.parse(sValue));
     default :
         return  sValue.toString();
    }
}

3.主函数:
/**
 * 通过表头对表列进行排序
 * 
 * @param sTableID
 *            要处理的表ID<table id=''>
 * @param iCol
 *            字段列id eg: 0 1 2 3 ...
 * @param sDataType
 *            该字段数据类型 int,float,date 缺省情况下当字符串处理
 */
function  sortTable(sTableID, iCol, sDataType) {
     var  oTable = document.getElementById(sTableID);
     var  oTBody = oTable.tBodies[0];
     var  colDataRows = oTBody.rows;
     var  aTRs =  new  Array;
     for  (  var  i = 0; i < colDataRows.length; i++) {
        aTRs[i] = colDataRows[i];
    }
     if  (oTable.sortCol == iCol) {
        aTRs.reverse();
    }  else  {
        aTRs.sort(generateCompareTRs(iCol, sDataType));
    }
     var  oFragment = document.createDocumentFragment();
     for  (  var  j = 0; j < aTRs.length; j++) {
        oFragment.appendChild(aTRs[j]);
    }
    oTBody.appendChild(oFragment);
    oTable.sortCol = iCol;
}

将以上问代码封装到一个js文件中,在html页面中引用。

测试test.html:

< html   xmlns = "http://www.w3.org/1999/xhtml" >
< title > 表列排序 </ title >
< script   type = "text/javascript"   src = "js/sortTable.js" > </ script >
< body >
< table   border = "1"   id = "tblSort" >
     < thead   style = "color: red; bgcolor: blank" >
         < tr >
             < th   onclick = " sortTable('tblSort',0);"   style = "cursor: pointer" > LastName </ th >
             < th   onclick = " sortTable('tblSort',1,'int');"   style = "cursor: pointer" > Number </ th >
             < th   onclick = " sortTable('tblSort',2,'date');"   style = "cursor: pointer" > Date </ th >
         </ tr >
     </ thead >
     < tbody >
         < tr >
             < td > A </ td >
             < td > 1 </ td >
             < td > 5/9/2008 </ td >
         </ tr >
         < tr >
             < td > B </ td >
             < td > 3 </ td >
             < td > 6/9/2008 </ td >
         </ tr >
         < tr >
             < td > D </ td >
             < td > 6 </ td >
             < td > 5/4/2008 </ td >
         </ tr >
         < tr >
             < td > E </ td >
             < td > -5 </ td >
             < td > 5/4/2007 </ td >
         </ tr >
         < tr >
             < td > H </ td >
             < td > 34 </ td >
             < td > 5/8/2008 </ td >
         </ tr >
         < tr >
             < td > C </ td >
             < td > 12 </ td >
             < td > 1/4/2018 </ td >
         </ tr >
     </ tbody >
</ table >
</ body >
</ html >
Javascript 相关文章推荐
js获取url参数的使用扩展实例
Dec 29 Javascript
js parentElement和offsetParent之间的区别
Mar 23 Javascript
读jQuery之四(优雅的迭代)
Jun 20 Javascript
更优雅的事件触发兼容
Oct 24 Javascript
jquery定时滑出可最小化的底部提示层特效代码
Oct 02 Javascript
jqplot通过ajax动态画折线图的方法及思路
Dec 08 Javascript
JQuery替换DOM节点的方法
Jun 11 Javascript
javascript生成随机数方法汇总
Nov 12 Javascript
jQuery制作网页版选项卡
Jul 28 Javascript
node.js发送邮件email的方法详解
Jan 06 Javascript
vue-star评星组件开发实例
Mar 01 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
Apr 13 Javascript
js获取判断上传文件后缀名的示例代码
Feb 19 #Javascript
jQuery 文本框得失焦点的简单实例
Feb 19 #Javascript
JS实现仿百度输入框自动匹配功能的示例代码
Feb 19 #Javascript
js 数值转换为3位逗号分隔的示例代码
Feb 19 #Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
Feb 19 #Javascript
JS执行删除前的判断代码
Feb 18 #Javascript
JS弹出层单纯的绝对定位居中示例代码
Feb 18 #Javascript
You might like
为你总结一些php信息函数
2015/10/21 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
JavaScript类和继承 constructor属性
2010/03/04 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
Angular2数据绑定详解
2017/04/18 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
Python制作CSDN免积分下载器
2015/03/10 Python
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
使用SAE部署Python运行环境的教程
2015/05/05 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
html5弹跳球示例代码
2013/07/23 HTML / CSS
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
四年级语文教学反思
2014/02/05 职场文书
人事专员职责
2014/02/22 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
2015年征兵工作总结
2015/07/23 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
赞美教师的句子
2019/09/02 职场文书