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 相关文章推荐
Google排名中的10个最著名的 JavaScript库
Apr 27 Javascript
JQquery的一些使用心得分享
Aug 01 Javascript
原生js实现给指定元素的后面追加内容
Apr 10 Javascript
window.print打印指定div实例代码
Dec 13 Javascript
js中arguments,caller,callee,apply的用法小结
Jan 28 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
Jan 28 Javascript
JavaScript模拟鼠标右键菜单效果
Dec 08 Javascript
vue中添加mp3音频文件的方法
Mar 02 Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 Javascript
vue2单元测试环境搭建
May 24 Javascript
基于Koa2写个脚手架模拟接口服务的方法
Nov 27 Javascript
vue.js中ref和$refs的使用及示例讲解
Aug 14 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数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
yii2中使用Active Record模式的方法
2016/01/09 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
php生出随机字符串
2017/07/06 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
老生常谈javascript中逻辑运算符&amp;&amp;和||的返回值问题
2017/04/13 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
Python Flask基础教程示例代码
2018/02/07 Python
实例介绍Python中整型
2019/02/11 Python
python3 requests库文件上传与下载实现详解
2019/08/22 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
高三自我鉴定怎么写
2013/10/19 职场文书
精神病医院见习报告
2014/11/03 职场文书
语文教师个人工作总结
2015/02/06 职场文书
党支部季度考核意见
2015/06/02 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
解析Java异步之call future
2021/06/14 Java/Android
golang中字符串MD5生成方式总结
2021/07/04 Golang