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 相关文章推荐
JS 常用校验函数
Mar 26 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
Jun 01 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
Mar 09 Javascript
JavaScript表格常用操作方法汇总
Apr 15 Javascript
jquery事件的ready()方法使用详解
Nov 11 Javascript
第一章之初识Bootstrap
Apr 25 Javascript
JS+canvas动态绘制饼图的方法示例
Sep 12 Javascript
ES6中数组array新增方法实例总结
Nov 07 Javascript
基于JS实现html中placeholder属性提示文字效果示例
Apr 19 Javascript
微信小程序scroll-view实现字幕滚动
Jul 14 Javascript
js实现页面图片消除效果
Mar 24 Javascript
一篇超完整的Vue新手入门指导教程
Nov 18 Vue.js
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 return语句另类用法不止是在函数中
2014/09/17 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
php实现计数器方法小结
2015/01/05 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
python 生成不重复的随机数的代码
2011/05/15 Python
python创建线程示例
2014/05/06 Python
在Python的web框架中配置app的教程
2015/04/30 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
详解python数据结构和算法
2019/04/18 Python
django基于restframework的CBV封装详解
2019/08/08 Python
python同步windows和linux文件
2019/08/29 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
canvas环形倒计时组件的示例代码
2018/06/14 HTML / CSS
Antler英国官网:购买安特丽行李箱、拉杆箱
2019/08/25 全球购物
献爱心标语
2014/06/21 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
2014年评职称工作总结
2014/11/20 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python