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>
时间: 2024-12-31 03:47:45

Javascript实现表格行排序的相关文章

javascript添加或者删除table表格行代码实例

javascript添加或者删除table表格行代码实例:表格是常用的元素,虽然在布局中已经鲜有使用,已经基本被div css所取代,但是在组织表格数据方面还是有很大的优势的,比使用div css要来的方便,添加或者删除一行也就是其中的tr更是最为常见的操作,下面就通过代码实例简单介绍一下如何实现此效果.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta

miniui 给表格行添加监听事件的几种方法以及点击某列列名数据不能排序的问题

最近在使用miniui框架做开发,在做表格行的点击监听事件中发现了几个属性,都可以起到监听效果但是执行的结果却大有不同.好了废话不多说,直接上代码. <div id="pageGrid" class="mini-datagrid" style="width: 100%; height: 100%; border:0;" url="${ctx}/tAXINFO/queryRepeat" autoload="tru

JavaScript --- Date():轮值行排序

这几天师傅开始做一个项目,要给多个金融机构按周排值.根据项目的后台代码,师傅交代我用 javascript 写前台轮值排班的代码,实现四个轮值行按周循环值班的功能. 以下是代码,为了解决引用的问题,代码写得有点罗嗦.虽然解决了问题,感觉应该能有更简单实现方法,但是现在想不出更好的方法~~~~~希望大家给个建议,谢谢啦! 1 var bank =["工行","农行","中行","建行"], 2 result = []; 3 4

利用插件(jQuery-ui.js)实现表格行的拖拽排序

template 模板(html) 首先要引入jQuery-ui.js的文件.import './../../scripts/base/jquery/jquery-ui.min.js';<table class="table-common" id="aggVDtTable"> <thead> <tr style="width: 100%;"> <th class="th1" style

Excel小技巧-你是否只知道表格按列排序?其实也可以按行排序!excel数据按行排序

Excel小技巧-你是否只知道表格按列排序?其实也可以按行排序!excel数据按行排序.系统默认情况下,数据都是按列进行排序的,可以通过简单的操作,让其进行按行进行排序. [解决方法,教程视频资料如下] 本教程视频资料来源:http://edu.51cto.com/course/15404.html 完整博客资料:http://blog.51cto.com/13172026/2292179 完整视频资料:http://edu.51cto.com/lecturer/13162026.html 原文

javascript实现表格升序降序排列

javascript实现表格升序降序排列的步骤如下: 1,生成表格,并给各列表头添加onclick的排序响应函数 2,取得表格各行的数据,并存入临时数组 3,对该临时数组进行排序 4,利用createDocumentFragment,appendChild方法把排序好的数组转换成表格输出,至此排序完毕. 详细代码如下: 经测试可以直接使用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht

javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

jsp页面表格布局Html代码 <body > <center> <input type="text" value="111" id="mytext"> <table border="1" width="60%" id="mytable"> <tr> <td id="td1">第一行第一列<

表格行变换顺序功能(jquery)

周末写了个更改表格行顺序的小功能,直接贴代码 表格部分如下: <table class="table" id="test_table"> <thead> <tr> <th>时间</th> <th>详情</th> <th>操作</th> </tr> </thead> <tbody> <tr cid="7.0.0

FineUI给表格行内链接设置弹出窗体

FineUI的表格链接可以设置相应的弹出窗体,这样我们可以借此实现对表格行相关的信息查询.编辑等功能. 前台代码: <f:Grid ID="Grid1" Width="800px" DataKeyNames="Id,Name" runat="server" Title="表格"> <Columns> <f:BoundField DataField="Name"