示例代码如下:
引用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>K2046.TableSorter</title>
<style type="text/css">
body{font-size:12px;line-height:25px;}
tr{height:25px;}
th{font-size:14px;border-bottom:solid 1px #DDDDDD;background-color:#EEEEEE;}
td{font-size:12px;text-align:center;}
.SortDescCss{background-image:url(http://k2046.cn/tb/Desc.gif);background-repeat:no-repeat;background-position:right center;}
.SortAscCss{background-image:url(http://k2046.cn/tb/Asc.gif);background-repeat:no-repeat;background-position:right center;}
</style>
</head>
<body>
代码:new TableSorter("tb1");<br />
效果:点击任意表头可执行排序.<br />
<table border="0" style="border:solid 1px #DDDDDD;width:360px;" cellpadding="0" cellspacing="0" id="tb1">
<tr>
<th>序号</th>
<th>姓名</th>
<th>工号</th>
<th>职位</th>
<th>性别</th>
<th>业绩</th>
<th>报到时间</th>
</tr>
<tr>
<td>1</td>
<td>刘德华</td>
<td>8008</td>
<td>总裁</td>
<td>男</td>
<td>98</td>
<td>2008-04-12</td>
</tr>
<tr>
<td>2</td>
<td>吴奇隆</td>
<td>8004</td>
<td>主管</td>
<td>男</td>
<td>80</td>
<td>2008-04-16</td>
</tr>
<tr>
<td>3</td>
<td>王光良</td>
<td>8003</td>
<td>经理</td>
<td>男</td>
<td>85</td>
<td>2008-04-15</td>
</tr>
<tr>
<td>4</td>
<td>张学友</td>
<td>8009</td>
<td>副总裁</td>
<td>男</td>
<td>90</td>
<td>2008-04-11</td>
</tr>
<tr>
<td>5</td>
<td>张柏芝</td>
<td>8005</td>
<td>助理</td>
<td>女</td>
<td>78</td>
<td>2008-04-13</td>
</tr>
<tr>
<td>6</td>
<td>陈冠希</td>
<td>8001</td>
<td>总监</td>
<td>男</td>
<td>60</td>
<td>2008-04-18</td>
</tr>
<tr>
<td>7</td>
<td>陈慧琳</td>
<td>8002</td>
<td>试用期</td>
<td>女</td>
<td>85</td>
<td>2008-04-18</td>
</tr>
<tr>
<td>8</td>
<td>张曼玉</td>
<td>8007</td>
<td>高级经理</td>
<td>女</td>
<td>82</td>
<td>2008-04-16</td>
</tr>
<tr>
<td>9</td>
<td>周润发</td>
<td>8006</td>
<td>副总裁</td>
<td>男</td>
<td>88</td>
<td>2008-04-13</td>
</tr>
</table>
<br />
代码:new TableSorter("tb2", 0, 2, 5, 6);<br />
效果:点击表头0,2,5,6列可执行排序.<br />
<table border="0" style="border:solid 1px #DDDDDD;width:360px;" cellpadding="0" cellspacing="0" id="tb2">
<tr>
<th>序号</th>
<th>姓名</th>
<th>工号</th>
<th>职位</th>
<th>性别</th>
<th>业绩</th>
<th>报到时间</th>
</tr>
<tr>
<td>1</td>
<td>刘德华</td>
<td>8008</td>
<td>总裁</td>
<td>男</td>
<td>98</td>
<td>2008-04-12</td>
</tr>
<tr>
<td>2</td>
<td>吴奇隆</td>
<td>8004</td>
<td>主管</td>
<td>男</td>
<td>80</td>
<td>2008-04-16</td>
</tr>
<tr>
<td>3</td>
<td>王光良</td>
<td>8003</td>
<td>经理</td>
<td>男</td>
<td>85</td>
<td>2008-04-15</td>
</tr>
<tr>
<td>4</td>
<td>张学友</td>
<td>8009</td>
<td>副总裁</td>
<td>男</td>
<td>90</td>
<td>2008-04-11</td>
</tr>
<tr>
<td>5</td>
<td>张柏芝</td>
<td>8005</td>
<td>助理</td>
<td>女</td>
<td>78</td>
<td>2008-04-13</td>
</tr>
<tr>
<td>6</td>
<td>陈冠希</td>
<td>8001</td>
<td>总监</td>
<td>男</td>
<td>60</td>
<td>2008-04-18</td>
</tr>
<tr>
<td>7</td>
<td>陈慧琳</td>
<td>8002</td>
<td>试用期</td>
<td>女</td>
<td>85</td>
<td>2008-04-18</td>
</tr>
<tr>
<td>8</td>
<td>张曼玉</td>
<td>8007</td>
<td>高级经理</td>
<td>女</td>
<td>82</td>
<td>2008-04-16</td>
</tr>
<tr>
<td>9</td>
<td>周润发</td>
<td>8006</td>
<td>副总裁</td>
<td>男</td>
<td>88</td>
<td>2008-04-13</td>
</tr>
</table>
<br /><br />
代码:new TableSorter("tb3").OnSorted = function(c, t)<br />
{<br />
alert("table is sorted by " + c.innerHTML + " " + (t ? "Asc" : "Desc"));<br />
}<br />
效果:点击任意表头可执行排序并返回提示.<br />
<table border="0" style="border:solid 1px #DDDDDD;width:360px;" cellpadding="0" cellspacing="0" id="tb3">
<tr>
<th>序号</th>
<th>姓名</th>
<th>工号</th>
<th>职位</th>
<th>性别</th>
<th>业绩</th>
<th>报到时间</th>
</tr>
<tr>
<td>1</td>
<td>刘德华</td>
<td>8008</td>
<td>总裁</td>
<td>男</td>
<td>98</td>
<td>2008-04-12</td>
</tr>
<tr>
<td>2</td>
<td>吴奇隆</td>
<td>8004</td>
<td>主管</td>
<td>男</td>
<td>80</td>
<td>2008-04-16</td>
</tr>
<tr>
<td>3</td>
<td>王光良</td>
<td>8003</td>
<td>经理</td>
<td>男</td>
<td>85</td>
<td>2008-04-15</td>
</tr>
<tr>
<td>4</td>
<td>张学友</td>
<td>8009</td>
<td>副总裁</td>
<td>男</td>
<td>90</td>
<td>2008-04-11</td>
</tr>
<tr>
<td>5</td>
<td>张柏芝</td>
<td>8005</td>
<td>助理</td>
<td>女</td>
<td>78</td>
<td>2008-04-13</td>
</tr>
<tr>
<td>6</td>
<td>陈冠希</td>
<td>8001</td>
<td>总监</td>
<td>男</td>
<td>60</td>
<td>2008-04-18</td>
</tr>
<tr>
<td>7</td>
<td>陈慧琳</td>
<td>8002</td>
<td>试用期</td>
<td>女</td>
<td>85</td>
<td>2008-04-18</td>
</tr>
<tr>
<td>8</td>
<td>张曼玉</td>
<td>8007</td>
<td>高级经理</td>
<td>女</td>
<td>82</td>
<td>2008-04-16</td>
</tr>
<tr>
<td>9</td>
<td>周润发</td>
<td>8006</td>
<td>副总裁</td>
<td>男</td>
<td>88</td>
<td>2008-04-13</td>
</tr>
</table>
<br />
<script language="javascript" type="text/javascript">
</script>
</body>
</html>
<script>
//----------- 排 序 -------------------------------------------
function TableSorter(table){
this.Table = this.$(table);
// alert(this.Table.innerHTML);
if(this.Table.rows.length <= 1){
return;
}
// alert(arguments[0]);
this.Init(arguments);
}
// 以下样式针对表头的单元格.
TableSorter.prototype.NormalCss = "NormalCss";// 没有执行排序时的样式.
TableSorter.prototype.SortAscCss = "SortAscCss";// 升序排序时的样式.
TableSorter.prototype.SortDescCss = "SortDescCss";// 降序排序时的样式.
// 初始化table的信息和操作.
TableSorter.prototype.Init = function(args){
this.ViewState = [];
// 设置表头的状态位,排序时根据状态判断升降序
for(var x = 0; x < this.Table.rows[0].cells.length; x++){
this.ViewState[x] = false;
}
// 参数args为数组,判断表头的那些字段需要排序,数组的第一个参数为要排序的表
if(args.length > 1){
for(var x = 1; x < args.length; x++){
// 循环判断每一个需要排序的表头字段的下标,是否大于表头的最大下标;
// 如果大的话说明是一个手误
// 如果正确在需要排序的表头字段添加onclick方法和相对的样式
// 代码:new TableSorter("tb2", 0, 2, 5, 6);<br />
// 效果:点击表头0,2,5,6列可执行排序.<br />
if(args[x] > this.Table.rows[0].cells.length){
continue;
}
else{
this.Table.rows[0].cells[args[x]].onclick = this.GetFunction(this,"Sort",args[x]);
this.Table.rows[0].cells[args[x]].style.cursor = "pointer";
}
}
}
// 参数不大于1,说明所有的字段都需要排序
else{
for(var x = 0; x < this.Table.rows[0].cells.length; x++){
this.Table.rows[0].cells[x].onclick = this.GetFunction(this,"Sort",x);
this.Table.rows[0].cells[x].style.cursor = "pointer";
}
}
}
// 简写document.getElementById方法.
TableSorter.prototype.$ = function(element){
return document.getElementById(element);
}
// 取得指定对象的脱壳函数.
TableSorter.prototype.GetFunction = function(variable,method,param){
// 在这里需要说明一下,variable-->对应的是this,method-->对应的是"Sort",param对应的是需要排序表头的下标
// this代表这个类,其中包括所用的方法和属性。下面的方法相当于调用Sort()方法
return function(){
variable[method](param);
}
}
// 执行排序.
TableSorter.prototype.Sort = function(col){
// 定义判断排序字段的一个标志位,数字排序(自己写)和字符排序(JavaScript内置函数)
var SortAsNumber = true;
// 为表头设置样式
for(var x = 0; x < this.Table.rows[0].cells.length; x++){
this.Table.rows[0].cells[x].className = this.NormalCss;
}
// 定义放置需要排序的行数组
var Sorter = [];
for(var x = 1; x < this.Table.rows.length; x++){
Sorter[x-1] = [this.Table.rows[x].cells[col].innerHTML, x];
// alert(Sorter[x-1]);
// 判断需要排序字段的类型,分为数字型和非数字型
SortAsNumber = SortAsNumber && this.IsNumeric(Sorter[x-1][0]);
// alert(Sorter[x-1][0]);
}
// 如果是数字型采用下面的方法排序
if(SortAsNumber){
for(var x = 0; x < Sorter.length; x++){
for(var y = x + 1; y < Sorter.length; y++){
if(parseFloat(Sorter[y][0]) < parseFloat(Sorter[x][0])){
var tmp = Sorter[x];
Sorter[x] = Sorter[y];
Sorter[y] = tmp;
}
}
}
}
// 如果是非数字型的可以采用内置方法sort()排序
else{
Sorter.sort();
}
if(this.ViewState[col]){
// JavaScript内置函数,用于颠倒数组中元素的顺序。
Sorter.reverse();
this.ViewState[col] = false;
this.Table.rows[0].cells[col].className = this.SortDescCss;
}
else{
this.ViewState[col] = true;
this.Table.rows[0].cells[col].className = this.SortAscCss;
}
var Rank = [];
for(var x = 0; x < Sorter.length; x++){
Rank[x] = this.GetRowHtml(this.Table.rows[Sorter[x][1]]);
}
// alert(Rank[0]);
for(var x = 1; x < this.Table.rows.length; x++){
for(var y = 0; y < this.Table.rows[x].cells.length; y++){
this.Table.rows[x].cells[y].innerHTML = Rank[x-1][y];
// alert(Rank[x-1][y]);
}
}
this.OnSorted(this.Table.rows[0].cells[col], this.ViewState[col]);
}
// 取得指定行的内容.
TableSorter.prototype.GetRowHtml = function(row){
var result = [];
for(var x = 0; x < row.cells.length; x++){
result[x] = row.cells[x].innerHTML;
}
return result;
}
TableSorter.prototype.IsNumeric = function(num){
return /^\d+(\.\d+)?$/.test(num);
}
// 可自行实现排序后的动作.
TableSorter.prototype.OnSorted = function(cell, IsAsc){
return;
}
new TableSorter("tb1");
//new TableSorter("tb2", 0, 2 , 5, 6);
//new TableSorter("tb3").OnSorted = function(c, t)
//{
//alert("table is sorted by " + c.innerHTML + " " + (t ? "Asc" : "Desc"));
//}
</script>
分享到:
相关推荐
点击表头进行排序,javascript控制
js实现点击表头排序
绝对是好东西 如果你刚好找这方面的资料要实现点击表头就产生排序,绝对实用,物超所值 轻量级JavaScript表格内容排序代码 对生产的html进行排序,不需要与数据库交互,速度性能好
table表头点击可实现排序,用JavaScript编写,可修改使用
在一个表格中,单击表头进行该列的排序,无需后台
js实现点击table表头字段,根据字段排序例子。在表中添加js代码后可以自动排序,非常方便!
使用JavaScript实现表格排序,点击表头切换升序降序,非常简单
js-table-sorter(纯js实现点击表头排序)
点击表头即可实现排序的代码./*table排序步骤 1、给排序的表格加id 2、标题栏加 3、排序的内容加 5、引入此js 6、在文档的末尾加入 [removed] var to = new TableOrder("idTable"), odID = to.creat({ type: "int", ...
NULL 博文链接:https://201201051654.iteye.com/blog/1430087
该报表可以点击表头进行自动排序,JS实现,任意字符串和数字。
JavaScripr版表格排序实现点击表头即可排序
点击表格表头排序 一个国外收费js控件,为大家节省点money
点击 表头进行排序 和 表头浮动。JS控制
js 实现 单击表头实现表格排序! 值得下载看看!资源免费,大家分享!!
非常好用的基于Jquery的前台按表头排序
html表格table的表头排序,js代码fastunit使用案例
根据表头进行排序,点击表头可实现升降排序,经过测试,可以使用,支持 IE、火狐等浏览器
摘要:脚本资源,Ajax/JavaScript,表头排序,表格分页 JavaScript点击表头排序,JavaScript分页显示表格中的数据,如果你对它的效果还算满意的话,请继续看它有哪些功能特点及如何使用,你会发现是如此简单。...
主要介绍了JS实现的点击表头排序功能,可实现针对表格中的字母、数字、日期等格式进行排序的功能,涉及javascript针对页面table元素的获取及字符串、数字等排序操作相关技巧,需要的朋友可以参考下