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 相关文章推荐
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
Feb 03 Javascript
JQuery表格内容过滤的实现方法
Jul 05 Javascript
JS 添加千分位与去掉千分位的示例
Jul 11 Javascript
JS中表单的使用小结
Jan 11 Javascript
jQuery异步验证用户名是否存在示例代码
May 21 Javascript
我的Node.js学习之路(二)NPM模块管理
Jul 06 Javascript
js 获取经纬度的实现方法
Jun 20 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
Apr 22 Javascript
JScript实现表格的简单操作
Aug 15 Javascript
Vue编写多地区选择组件
Aug 21 Javascript
javascript中神奇的 Date对象小结
Oct 12 Javascript
微信小程序实现拨打电话功能的示例代码
Jun 28 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
让PHP支持页面回退的两种方法[转]
2007/02/14 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
Python中操作MySQL入门实例
2015/02/08 Python
python创建和删除目录的方法
2015/04/29 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
Python部署web开发程序的几种方法
2017/05/05 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
python求解汉诺塔游戏
2020/07/09 Python
HTML5注册页面示例代码
2014/03/27 HTML / CSS
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
市场开发计划书
2014/05/07 职场文书
2014年管理工作总结
2014/11/22 职场文书
2015教师年度考核评语
2015/03/25 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
python 安全地删除列表元素的方法
2022/03/16 Python
设置IIS Express并发数
2022/07/07 Servers