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 相关文章推荐
通过 Dom 方法提高 innerHTML 性能
Mar 26 Javascript
23个Javascript弹出窗口特效整理
Feb 25 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
Oct 07 Javascript
Node.js connect ECONNREFUSED错误解决办法
Sep 15 Javascript
微信小程序链接传参并跳转新页面
Nov 29 Javascript
js通过指定下标或指定元素进行删除数组的实例
Jan 12 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
Jun 22 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
Jan 09 jQuery
AngularJS对动态增加的DOM实现ng-keyup事件示例
Mar 12 Javascript
在vue项目中使用sass的配置方法
Mar 20 Javascript
jQuery中将json数据显示到页面表格的方法
May 27 jQuery
JavaScript碎片—函数闭包(模拟面向对象)
Mar 13 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数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
PHP积分兑换接口实例
2015/02/09 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
Javascript中的常见排序算法
2007/03/27 Javascript
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
js面向对象的写法
2016/02/19 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
JS面向对象之多选框实现
2020/01/17 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
Python实现截屏的函数
2015/07/25 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
django 信号调度机制详解
2019/07/19 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
Python龙贝格法求积分实例
2020/02/29 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
几个Shell Script面试题
2012/08/31 面试题
研究生自我鉴定范文
2013/10/30 职场文书
优秀教师获奖感言
2014/01/31 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
党员身份证明材料
2015/06/19 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript