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 相关文章推荐
利用JQuery和JS实现奇偶行背景颜色自定义效果
Nov 19 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
Jul 31 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
JS中完美兼容各大浏览器的scrolltop方法
Apr 17 Javascript
javascript中DOM复选框选择用法实例
May 14 Javascript
js实现图片无缝滚动特效
Mar 19 Javascript
AngularJs ng-route路由详解及实例代码
Sep 14 Javascript
jQuery回调方法使用示例
Jun 26 jQuery
Vue中使用vux配置代码详解
Sep 16 Javascript
element-ui upload组件多文件上传的示例代码
Oct 17 Javascript
JS使用cookie保存用户登录信息操作示例
May 30 Javascript
js实现图片跟随鼠标移动效果
Oct 16 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 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
PHP实现懒加载的方法
2015/03/07 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
NodeJs基本语法和类型
2015/02/13 NodeJs
javaScript中with函数用法实例分析
2015/06/08 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
Fiddler如何抓取手机APP数据包
2016/01/22 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
Linux Interview Questions For software testers
2012/06/02 面试题
介绍一下Make? 为什么使用make
2016/07/31 面试题
销售区域经理岗位职责
2015/04/10 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
Python基础之字符串格式化详解
2021/04/21 Python
MongoDB数据库的安装步骤
2021/06/18 MongoDB
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫