TableSort.js表格排序插件使用方法详解

发布时间 - 2026-01-10 22:58:39    点击率:

本文实例为大家分享了TableSort.js表格排序的具体代码,供大家参考,具体内容如下

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>TableSort</title> 
<style type="text/css"> 
table { 
  border-collapse: collapse; 
  width: 300px; 
} 
table caption { 
  border-right: 1px solid #abc; 
  border-left: 1px solid #abc; 
  border-top: 2px solid #000; 
  border-bottom: 2px solid #000; 
  background-color: #afd; 
} 
#sales tr, #sales td { 
  border: 1px solid #abc; 
  text-align: center; 
} 
</style> 
</head> 
<body> 
<table id="sales" summary="summary here"> 
 <caption> 
 Main Title 
 </caption> 
 <col/> 
 <col/> 
 <col/> 
 <thead> 
  <tr> 
   <th class="asc">Col1</th> 
   <th>Col2</th> 
   <th>Col3</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>A1</td> 
   <td>S2</td> 
   <td>W3</td> 
  </tr> 
  <tr> 
   <td>B1</td> 
   <td>C2</td> 
   <td>V3</td> 
  </tr> 
  <tr> 
   <td>C1</td> 
   <td>X2</td> 
   <td>K3</td> 
  </tr> 
 </tbody> 
 <!-- tfoot><tr><td cols=3 >other description</td></tr></tfoot --> 
</table> 
<button onclick="fn()">Test</button> 
<script language="javascript"> 
function TableSort(id) { 
  this.tbl = document.getElementById(id); 
  this.lastSortedTh = null; 
  if (this.tbl && this.tbl.nodeName == "TABLE") { 
    var headings = this.tbl.tHead.rows[0].cells; 
    for (var i = 0; headings[i]; i++) { 
      if (headings[i].className.match(/asc|dsc/)) { 
        this.lastSortedTh = headings[i]; 
      } 
    } 
    this.makeSortable(); 
  } 
} 
TableSort.prototype.makeSortable = function() { 
  var headings = this.tbl.tHead.rows[0].cells; 
  for (var i = 0; headings[i]; i++) { 
    headings[i].cIdx = i; 
    var a = document.createElement("a"); 
    a.href = "#"; 
    a.innerHTML = headings[i].innerHTML; 
    a.onclick = function(that) { 
      return function() { 
        that.sortCol(this); 
        return false; 
      } 
    }(this); 
    headings[i].innerHTML = ""; 
    headings[i].appendChild(a); 
  } 
} 
TableSort.prototype.sortCol = function(el) { 
  var rows = this.tbl.rows; 
  var alpha = [], numeric = []; 
  var aIdx = 0, nIdx = 0; 
  var th = el.parentNode; 
  var cellIndex = th.cIdx; 
 
  for (var i = 1; rows[i]; i++) { 
    var cell = rows[i].cells[cellIndex]; 
    var content = cell.textContent ? cell.textContent : cell.innerText; 
    var num = content.replace(/(\$|\,|\s)/g, ""); 
    if (parseFloat(num) == num) { 
      numeric[nIdx++] = { 
        value : Number(num), 
        row : rows[i] 
      } 
    } else { 
      alpha[aIdx++] = { 
        value : content, 
        row : rows[i] 
      } 
    } 
  } 
  function bubbleSort(arr, dir) { 
    var start, end; 
    if (dir === 1) { 
      start = 0; 
      end = arr.length; 
    } else if (dir === -1) { 
      start = arr.length - 1; 
      end = -1; 
    } 
    var unsorted = true; 
    while (unsorted) { 
      unsorted = false; 
      for (var i = start; i != end; i = i + dir) { 
        if (arr[i + dir] && arr[i].value > arr[i + dir].value) { 
          var temp = arr[i]; 
          arr[i] = arr[i + dir]; 
          arr[i + dir] = temp; 
          unsorted = true; 
        } 
      } 
    } 
    return arr; 
  } 
 
  var col = [], top, bottom; 
  if (th.className.match("asc")) { 
    top = bubbleSort(alpha, -1); 
    bottom = bubbleSort(numeric, -1); 
    th.className = th.className.replace(/asc/, "dsc"); 
  } else { 
    top = bubbleSort(numeric, 1); 
    bottom = bubbleSort(alpha, 1); 
    if (th.className.match("dsc")) { 
      th.className = th.className.replace(/dsc/, "asc"); 
    } else { 
      th.className += "asc"; 
    } 
  } 
  if (this.lastSortedTh && th != this.lastSortedTh) { 
    this.lastSortedTh.className = this.lastSortedTh.className.replace( 
        /dsc|asc/g, ""); 
  } 
  this.lastSortedTh = th; 
  col = top.concat(bottom); 
  var tBody = this.tbl.tBodies[0]; 
  for (var i = 0; col[i]; i++) { 
    tBody.appendChild(col[i].row); 
  } 
} 
function fn() { 
 
  var sales = document.getElementById('sales'); 
  var sortTable = new TableSort('sales'); 
} 
</script> 
</body> 
</html> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# tablesort.js表格排序  # tablesort.js表格排序插件  # js表格排序插件  # javascript sort()对数组中的元素进行排序详解  # Elementui表格组件+sortablejs实现行拖拽排序的示例代码  # JS简单数组排序操作示例【sort方法】  # JS拖拽排序插件Sortable.js用法实例分析  # jQuery实现使用sort方法对json数据排序的方法  # 基于js 各种排序方法和sort方法的区别(详解)  # JavaScript中数组Array.sort()排序方法详解  # Sortable.js拖拽排序使用方法解析  # JS sort排序详细使用方法示例解析  # 大家分享  # 具体内容  # 大家多多  # td  # align  # sales  # tr  # id  # summary  # center  # body  # top  # abc  # left  # color  # afd  # bottom  # background  # tbody  # col 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  如何在阿里云通过域名搭建网站?  如何登录建站主机?访问步骤全解析  如何快速查询网站的真实建站时间?  什么是javascript作用域_全局和局部作用域有什么区别?  android nfc常用标签读取总结  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何在腾讯云免费申请建站?  Laravel集合Collection怎么用_Laravel集合常用函数详解  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  智能起名网站制作软件有哪些,制作logo的软件?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  三星、SK海力士获美批准:可向中国出口芯片制造设备  如何快速上传自定义模板至建站之星?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  香港服务器部署网站为何提示未备案?  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  bing浏览器学术搜索入口_bing学术文献检索地址  JS经典正则表达式笔试题汇总  桂林网站制作公司有哪些,桂林马拉松怎么报名?  javascript基于原型链的继承及call和apply函数用法分析  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  JS中对数组元素进行增删改移的方法总结  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Laravel如何自定义分页视图?(Pagination示例)  手机软键盘弹出时影响布局的解决方法  浅谈redis在项目中的应用  如何将凡科建站内容保存为本地文件?  详解Android图表 MPAndroidChart折线图  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  怎样使用JSON进行数据交换_它有什么限制  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  如何用西部建站助手快速创建专业网站?  如何破解联通资金短缺导致的基站建设难题?  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  JavaScript数据类型有哪些_如何准确判断一个变量的类型  Laravel如何配置任务调度?(Cron Job示例)  如何在阿里云虚拟主机上快速搭建个人网站?  LinuxCD持续部署教程_自动发布与回滚机制  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Laravel怎么使用Intervention Image库处理图片上传和缩放  大学网站设计制作软件有哪些,如何将网站制作成自己app?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?