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静态作用域的功能。
Dec 25 Javascript
JQuery中getJSON的使用方法
Dec 13 Javascript
jquery将一个表单序列化为一个对象的方法
Jan 03 Javascript
关闭页面window.location事件未执行的原因及解决方法
Sep 01 Javascript
javascript中错误使用var造成undefined
Mar 31 Javascript
js计算系统当前日期是星期几的方法
Jul 14 Javascript
微信小程序 欢迎页面的制作(源码下载)
Jan 09 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
Jan 18 Javascript
Node.js 的模块知识汇总
Aug 16 Javascript
原生js+canvas实现下雪效果
Aug 02 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
Aug 22 Javascript
Openlayers实现地图的基本操作
Sep 28 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
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
2020/08/26 PHP
newxtree.js代码
2007/03/13 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
Python数据结构之Array用法实例
2014/10/09 Python
python每隔N秒运行指定函数的方法
2015/03/16 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
Atom的python插件和常用插件说明
2018/07/08 Python
python getpass模块用法及实例详解
2019/10/07 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
物业管理毕业生个人的求职信
2013/11/30 职场文书
内业资料员岗位职责
2014/01/04 职场文书
企业内控岗位的职责
2014/02/07 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
先进班集体申报材料
2014/12/26 职场文书
社会实践活动报告
2015/02/05 职场文书
小学六一主持词开场白
2015/05/28 职场文书
看上去很美观后感
2015/06/10 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python