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获取作用在元素上面的样式属性代码
Sep 20 Javascript
JS获取select-option-text_value的方法
Dec 26 Javascript
js检测网络是否具体连接功能的代码
May 23 Javascript
AngularJs表单验证实例代码解析
Nov 29 Javascript
BootStrapValidator初使用教程详解
Feb 10 Javascript
微信小程序开发之toast等弹框提示使用教程
Jun 08 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
Aug 09 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
Apr 10 Javascript
记录一次开发微信网页分享的步骤
May 07 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
Feb 07 Javascript
JavaScript实现PC端横向轮播图
Feb 07 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
Jul 29 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代码把全角数字转为半角数字
2007/12/10 PHP
Thinkphp中数据按分类嵌套循环实现方法
2014/10/30 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
js获取url参数的使用扩展实例
2007/12/29 Javascript
javascript AutoScroller 函数类
2009/05/29 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
Django中多种重定向方法使用详解
2019/07/17 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
简单了解如何封装自己的Python包
2020/07/08 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
农民工创业典型事迹
2014/01/25 职场文书
年度考核表个人总结
2015/03/06 职场文书
简历自我评价模板
2015/03/11 职场文书
小学教师党员承诺书
2015/04/27 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python
SQL Server中使用表变量和临时表
2022/05/20 SQL Server