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 相关文章推荐
juqery 学习之三 选择器 子元素与表单
Nov 25 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
Sep 02 Javascript
Jquery submit()无法提交问题
Apr 21 Javascript
jquery 实现窗口的最大化不论什么情况
Sep 03 Javascript
js 针对html DOM元素操作等经验累积
Mar 11 Javascript
JavaScript实现的多个图片广告交替显示效果代码
Sep 04 Javascript
Bootstrap Fileinput文件上传组件用法详解
May 10 Javascript
微信小程序之前台循环数据绑定
Aug 18 Javascript
详解webpack自定义loader初探
Aug 29 Javascript
JavaScript如何获取一个元素的样式信息
Jul 29 Javascript
Vue初始化中的选项合并之initInternalComponent详解
Jun 11 Javascript
uniapp微信小程序实现一个页面多个倒计时
Nov 01 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
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
Python生成随机数的方法
2014/01/14 Python
python实现学生信息管理系统
2020/04/05 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
电脑售后服务承诺书
2014/03/27 职场文书
进口业务员岗位职责
2014/04/06 职场文书
安全教育月活动总结
2014/05/05 职场文书
关于保护环境的建议书
2014/08/26 职场文书
法学专业求职信范文
2015/03/19 职场文书
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python