Javascript实现表格行排序
网站开发中凡是用到表格来展示数据的,往往都要根据某个列来对行排序,下面是我从书上看到的一个行排序例子,看过后受益匪浅,故分享出来。
直接献上完整代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Javascript原生代码实现表格排序</title>
<script type="text/javascript">
//根据指定表格每行第n个单元格的值,对第一个tbody中的行进行排序
//如果存在comparator函数则使用它,否则按字母表顺序比较
function sortRows(table,n,comparator){
var tbody = table.tBodies[0];
var rows = tbody.getElementsByTagName("tr");
rows = Array.prototype.slice.call(rows,0);//转化为真实数组
//基于第n个<td>元素的值对行排序
rows.sort(function(row1,row2){
var cell1 = row1.getElementsByTagName("td")[n];
var cell2 = row2.getElementsByTagName("td")[n];
var val1 = cell1.textContent || cell1.innerText;//IE兼容
var val2 = cell2.textContent || cell2.innerText;
if(comparator) return comparator(val1,val2);
if(val1<val2) return -1;
else if(val1>val2) return 1;
else return 0;
});
for(var i=0;i<rows.length;i++) tbody.appendChild(rows[i]); //原先的会自动移除
} //查找表格的<th>元素(假设只有一行),让它们可单击,以便单击该列对行排序
function makeSortTable(table){
var headers = table.getElementsByTagName("th");
for(var i=0;i<headers.length;i++){
(function(n){ //嵌套函数来创建本地作用域 (这段代码自己也不太懂,自己试过把嵌套函数去掉,但结果出错,希望看懂这段代码的人也教教我)
headers[i].onclick = function(){sortRows(table,n);};
}(i)); }
} window.onload = function(){
var table = document.getElementById("table");
makeSortTable(table);
}
</script>
<style type="text/css">
table{
table-layout: auto;
border-collapse: collapse;
}
th{
border: solid 1px rgb(0,0,0);
cursor:pointer;
}
th:hover{
background: red;
}
td{
border: solid 1px rgb(0,0,0);
}
</style>
</head>
<body>
<table id="table">
<thead><tr><th>Name</th><th>age</th></tr></thead>
<tr><td>lhm</td><td>24</td></tr>
<tr><td>hyl</td><td>25</td></tr>
<tr><td>hs</td><td>28</td></tr>
<tr><td>cg</td><td>23</td></tr>
<tr><td>yqf</td><td>23</td></tr>
<tr><td>wqz</td><td>38</td></tr>
<tr><td>xf</td><td>45</td></tr>
</table>
</body>
</html>
Javascript实现表格行排序的更多相关文章
- miniui 给表格行添加监听事件的几种方法以及点击某列列名数据不能排序的问题
最近在使用miniui框架做开发,在做表格行的点击监听事件中发现了几个属性,都可以起到监听效果但是执行的结果却大有不同.好了废话不多说,直接上代码. <div id="pageGrid ...
- 利用插件(jQuery-ui.js)实现表格行的拖拽排序
template 模板(html) 首先要引入jQuery-ui.js的文件.import './../../scripts/base/jquery/jquery-ui.min.js';<tab ...
- javaScript之表格操作<一:新增行>
DOM表格系列操作 /** * 添加表格行 * @function 本接口可以用于:在表格tbody部分新增任意数量,任意样式的行HTML结构; * @name addTableLines * @au ...
- 从头开始一步一步实现EF6+Autofac+MVC5+Bootstarp极简前后台ajax表格展示及分页(二)前端修改、添加表格行点击弹出模态框
在前一篇中,由于不懂jquery,前端做的太差了,今天做稍做修改,增加一个跳转到指定页面功能,表格行点击样式变化.并且在表格中加入bootstarp的按钮组,按钮点击后弹出模态框,须修改common, ...
- 在Bootstrap开发框架中使用dataTable直接录入表格行数据
在Winform开发的时候,我们很多时候可以利用表格控件来直接录入数据,不过在Web上较少看到,其实也可以利用dataTable对象处理直接录入表格行数据,这个可以提高数据的录入方便,特别是在一些简单 ...
- day37—javascript对表格table的操作应用(二)
转行学开发,代码100天——2018-04-22 昨天学习了JavaScript对table的基本操作,包括表格的创建,表格元素的获取,隔行换色及鼠标动作等.今天主要学习table的搜索查询及排序操作 ...
- JQuery EasyUI DataGrid根据条件设置表格行样式(背景色)
1.javascript定义函数返回样式 <script type="text/javascript"> //根据条件设置表格行背景颜色 function setRow ...
- JS组件系列——Bootstrap Table 表格行拖拽
前言:之前一直在研究DDD相关知识,好久没更新JS系列文章了.这两天做了一个简单的业务需求,觉得效果还可以,今天在这里分享给大家,欢迎拍砖~~ 一.业务需求及实现效果 项目涉及到订单模块,那天突然接到 ...
- jquery 动态添加表格行
jquery 动态添加表格行 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <h ...
随机推荐
- html Table实现表头固定
最近一直在搞前台琐碎的东西,也学习了一下linux,没有时间对新的东西进行深入的研究和学习,没有写博客,不过归咎其原因还是在于自己的惰怠. 废话不多说,今天想将一个前台页面设计的一个小东西分享一下,那 ...
- IE6、火狐不支持a:visited
今天做个样式,想让超链接点击后变成灰色,可发现IE里是没问题,可火狐就全灰色的.我测试了好几遍,发现不是顺序的问题.当然可以在火狐里地址栏里输入about:config.可总不能让用户去那里改吧.以下 ...
- RxJava 与 Retrofit 结合的最佳实践
转自:http://gank.io/post/56e80c2c677659311bed9841?from=timeline&isappinstalled=0&nsukey=g1D1Y6 ...
- Typecho中文验证码Captcha插件
前言实在是受不了每天都要删除掉上百条的垃圾评论,干脆自己做了个验证码插件,顺带做的完善了些,分享给大家. 本插件是在评论验证码插件基础上完善而来.所不同的是,采用了最新的securimage 3.0. ...
- “#ifdef __cplusplus extern "C" { #endif”的定义
平时我们在linux c平台开发的时候,引用了一些Cpp或者C的代码库,发现一些头文件有如下代码条件编译. #ifdef __cplusplus extern "C" { #end ...
- QT creator中使用opencv
最近要用到opencv做图像方面的东西,网上很多是用VS加opencv,但自己对VS不怎么喜欢,想用QT Creator.在网上搜索了很多资料,终于花了一天的时间,在QT Creator上能使用ope ...
- 批处理SQL语句
作用:想发送多条SQL,又要降低与数据库系统的交互,这时使用批处理 一]Statement对象——适合对不同结构的SQL语句进行批处理操作 步骤: 1 ...
- 注册nodejs程序为windows服务
转载地址:http://www.grati.org/?p=236 应lemonhall要求,写一篇在windows中部署nodejs程序的文章,并提供了how to node上 “deploying- ...
- 自制单片机之九……写给对制做并口ISP下载线有疑惑的朋友
一.器件的选用 制做并口ISP下载在网上有很多的电路和对应的PC端下载软件.很多人疑惑,不知该用哪张图,用哪个下载软件.我看了一下,采用的器件主要是74HC373.74HC541和74HC244.其实 ...
- VS2010安装与测试编译问题(fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt)
由于第三方库的各种原因,与编译冲突问题,公司又决定把整个项目都统一改用VS2010来编译.所以我把我开发机上的VS2008卸载了,又重新安装了VS2010.无奈出现了COFF格式转换问题.搜索了下.完 ...