javascript操作表格排序实例分析


Posted in Javascript onMay 06, 2015

本文实例讲述了javascript操作表格排序的方法。分享给大家供大家参考。具体如下:

完整例子如下:

<html>
 <head>
 <title>Table Sort Example</title>
 <script type="text/javascript">
 //转换器,将列的字段类型转换为可以排序的类型:String,int,float
  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();
  }
  }
  //排序函数产生器,iCol表示列索引,sDataType表示该列的数据类型
  function generateCompareTRs(iCol, sDataType) {
  return function compareTRs(oTR1, oTR2) {
    var vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
    var vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
    if (vValue1 < vValue2) {
    return -1;
    } else if (vValue1 > vValue2) {
    return 1;
    } else {
    return 0;
    }
   };
  }
  //排序方法
  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];
  }
  //判断最后一次排序的列是否与现在要进行排序的列相同,
  //是的话,直接使用reverse()逆序
  if (oTable.sortCol == iCol) {
   aTRs.reverse();
  } else {
   //使用数组的sort方法,传进排序函数
   aTRs.sort(generateCompareTRs(iCol, sDataType));
  }
  var oFragment = document.createDocumentFragment();
  for (var i=0; i < aTRs.length; i++) {
   oFragment.appendChild(aTRs[i]);
  }
  oTBody.appendChild(oFragment);
  //记录最后一次排序的列索引
  oTable.sortCol = iCol;
  }
 </script>
 </head>
 <body>
 <p>Click on the table header to sort in ascending order.</p>
 <table border="1" id="tblSort">
  <thead>
  <tr>
   <th onclick="sortTable('tblSort', 0)"
   style="cursor:pointer">Last Name</th>
   <th onclick="sortTable('tblSort', 1)"
   style="cursor:pointer">First Name</th>
   <th onclick="sortTable('tblSort', 2, 'date')"
   style="cursor:pointer">Birthday</th>
   <th onclick="sortTable('tblSort', 3, 'int')"
   style="cursor:pointer">Siblings</th>
  </tr>
  </thead>
  <tbody>
  <tr>
   <td>Smith</td>
   <td>John</td>
   <td>7/12/1978</td>
   <td>2</td>
  </tr>
  <tr>
   <td>Johnson</td>
   <td>Betty</td>
   <td>10/15/1977</td>
   <td>4</td>
  </tr>
  <tr>
   <td>Henderson</td>
   <td>Nathan</td>
   <td>2/25/1949</td>
   <td>1</td>
  </tr>
  <tr>
   <td>Williams</td>
   <td>James</td>
   <td>7/8/1980</td>
   <td>4</td>
  </tr>
  <tr>
   <td>Gilliam</td>
   <td>Michael</td>
   <td>7/22/1949</td>
   <td>1</td>
  </tr>
  <tr>
   <td>Walker</td>
   <td>Matthew</td>
   <td>1/14/2000</td>
   <td>3</td>
  </tr>
  </tbody>
 </table> 
 </body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
在javascript中执行任意html代码的方法示例解读
Dec 25 Javascript
JavaScript编程的10个实用小技巧
Apr 18 Javascript
json实现前后台的相互传值详解
Jan 05 Javascript
微信小程序之电影影评小程序制作代码
Aug 03 Javascript
jquery获取链接地址和跳转详解(推荐)
Aug 15 jQuery
ReactJS实现表单的单选多选和反选的示例
Oct 13 Javascript
微信小程序scroll-view组件实现滚动动画
Jan 31 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
Sep 10 Javascript
vue生命周期和react生命周期对比【推荐】
Sep 19 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
May 02 Javascript
史上最为详细的javascript继承(推荐)
May 18 Javascript
js基础语法与maven项目配置教程案例
Jul 15 Javascript
js获取form的方法
May 06 #Javascript
js给selected添加options的方法
May 06 #Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
May 06 #Javascript
js实现漂浮回顶部按钮实例
May 06 #Javascript
js实现仿百度汽车频道选择汽车图片展示实例
May 06 #Javascript
js中日期的加减法
May 06 #Javascript
javascript实现回到顶部特效
May 06 #Javascript
You might like
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
js函数般调用正则
2008/04/08 Javascript
javascript 年月日联动实现核心代码
2009/12/21 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
函授本科毕业自我鉴定
2013/10/09 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
给客户的检讨书
2014/12/21 职场文书
四十年同学聚会致辞
2015/07/28 职场文书