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 相关文章推荐
纯CSS打造的导航菜单(附jquery版)
Aug 07 Javascript
一个简单的Ext.XTemplate的实例代码
Mar 18 Javascript
Jquery绑定事件(bind和live的区别介绍)
Aug 23 Javascript
jquery delay()介绍及使用指南
Sep 02 Javascript
实例讲解jquery中mouseleave和mouseout的区别
Feb 17 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
Dec 22 Javascript
利用Jasmine对Angular进行单元测试的方法详解
Jun 12 Javascript
基于vue的短信验证码倒计时demo
Sep 13 Javascript
js中的闭包实例展示
Nov 01 Javascript
通过实例解析js简易模块加载器
Jun 17 Javascript
解决Vue调用springboot接口403跨域问题
Sep 02 Javascript
原生JS利用transform实现banner的无限滚动示例代码
Jun 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编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP中替换换行符的几种方法小结
2012/10/15 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
JQuery的一些小应用收集
2010/03/27 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
详解基于Vue+Koa的pm2配置
2017/10/24 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
python求众数问题实例
2014/09/26 Python
Linux下Python获取IP地址的代码
2014/11/30 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
学校欢迎标语
2014/06/18 职场文书
学校总务处领导班子民主生活会对照检查材料思想汇报
2014/09/27 职场文书
自主招生自荐信范文
2015/03/04 职场文书
综治目标管理责任书
2015/05/11 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs