`
txf2004
  • 浏览: 6854376 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

table排序类,点击第一行标题可以排序

阅读更多

table排序类,点击第一行标题可以排序

http://www.corange.cn//uploadfiles/1005-2_65008.jpg


<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>table排序类,点击第一行标题可以排序
corange.cn</title>
</head>
<body>
<style type="text/css">
.fu_list{ width:400px; border:1px solid #ebebeb;line-height:20px; font-size:12px;}
.fu_list thead td{background-color:#ebebeb;}
.fu_list td{padding:5px;}
.fu_list a{outline:none;/*ff*/hide-focus:expression(this.hideFocus=true);/*ie*/ text-decoration:none; color:#333;}
.fu_list thead a{padding-right:15px;}
.fu_list thead a.up, .fu_list thead a.down{ background:url(up.gif) right center no-repeat; }
.fu_list thead a.down{background-image:url(down.gif);}
</style>
<table border="0" cellspacing="0" cellpadding="0" class="fu_list">
<thead>
<tr>
<td>&nbsp;<a href="javascript:void(0)" id="idTitle">名称</a> / <a href="javascript:void(0)" id="idExt">类型</a></td>
<td width="200" align="center"><a href="javascript:void(0)" id="idAddtime" class="up">上传时间</a></td>
<td width="50" align="center"><a href="javascript:void(0)" id="idSize">大小</a></td>
</tr>
</thead>
<tbody id="idList">
<tr>
<td _ext="rar">new.rar</td>
<td align="center" _order="2008/9/12 8:51:09">2008-9-12 8:51:09</td>
<td align="right" _order="433247">423.09 K</td>
</tr>
<tr>
<td _ext="js">TagControl.js</td>
<td align="center" _order="2008/9/23 11:26:57">2008-9-23 11:26:57</td>
<td align="right" _order="1387">1.35 K</td>
</tr>
<tr>
<td _ext="js">Scroller.js</td>
<td align="center" _order="2008/9/23 11:26:57">2008-9-23 11:26:57</td>
<td align="right" _order="2556">2.5 K</td>
</tr>
<tr>
<td _ext="js">AlertBox.js</td>
<td align="center" _order="2008/9/23 11:26:57">2008-9-23 11:26:57</td>
<td align="right" _order="3565">3.48 K</td>
</tr>
<tr>
<td _ext="htm">1.htm</td>
<td align="center" _order="2008/10/4 20:21:54">2008-10-4 20:21:54</td>
<td align="right" _order="11394">11.13 K</td>
</tr>
<tr>
<td _ext="htm">4.htm</td>
<td align="center" _order="2008/10/4 20:21:54">2008-10-4 20:21:54</td>
<td align="right" _order="351">351 b</td>
</tr>
<tr>
<td _ext="xml">news.xml</td>
<td align="center" _order="2008/10/4 20:24:11">2008-10-4 20:24:11</td>
<td align="right" _order="14074">13.74 K</td>
</tr>
<tr>
<td _ext="xsl">news.xsl</td>
<td align="center" _order="2008/10/4 20:24:11">2008-10-4 20:24:11</td>
<td align="right" _order="16796">16.4 K</td>
</tr>
<tr>
<td _ext="js">function.js</td>
<td align="center" _order="2008/10/4 20:24:11">2008-10-4 20:24:11</td>
<td align="right" _order="2844">2.78 K</td>
</tr>
</tbody>
</table>
<input name="" type="button" value="有x的排后面" id="idBtn" />
<script type="text/javascript">
var $ = function (id) {
return "string" == typeof id ? document.getElementById(id) : id;
};
var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
Object.extend = function(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
}
function Each(list, fun){
for (var i = 0, len = list.length; i < len; i++) { fun(list[i], i); }
};
/////////////////////////////////////
////////////////////////////////
var TableOrder = Class.create();
TableOrder.prototype = {
initialize: function(tbody) {
var oThis = this;

this.tBody = $(tbody);//tbody对象
this.Rows = [];//行集合
this._order = null;//排序对象

Each(this.tBody.rows, function(o){ oThis.Rows.push(o); })
},
//排序并显示
Sort: function() {
//排序
if(!this._order){ return false };//没有排序对象返回

this.Rows.sort(!this._order.Compare ? this.Compare() : this._order.Compare);//排序
this._order.Down && this.Rows.reverse();//取反
//显示表格
var oFragment = document.createDocumentFragment();
Each(this.Rows, function(o){ oFragment.appendChild(o); });
this.tBody.appendChild(oFragment);
},
//比较函数
Compare: function() {
var oThis = this;
return function(o1, o2) {
var value1 = oThis.GetValue(o1), value2 = oThis.GetValue(o2);
return value1 < value2 ? -1 : value1 > value2 ? 1 : 0;
};
},
//获取比较值
GetValue: function(tr) {
var data = tr.getElementsByTagName("td")[this._order.Index].getAttribute(this._order.Attribute);
//数据转换
switch (this._order.DataType.toLowerCase()) {
case "int":
return parseInt(data) || 0;
case "float":
return parseFloat(data) || 0;
case "date":
return Date.parse(data) || 0;
case "string":
default:
return data.toString() || "";
}
},
//添加并返回一个排序对象
Add: function(index, options) {
var oThis = this;
return new function(){
//默认属性
this.Attribute = "innerHTML";//获取数据的属性
this.DataType = "string";//数据类型
this.Down = false;//是否按顺序
this.Compare = null;//自定义排序函数
Object.extend(this, options || {});
//排序对象的属性
this.Index = index;
this.Sort = function(){ oThis._order = this; oThis.Sort(); };
};
}
}
var to = new TableOrder("idList");
function SetOrder(obj, index, options){
var o = $(obj);
//添加一个排序对象
var order = to.Add(index, options);
o.onclick = function(){
//取相反排序
order.Down = !order.Down;
//设置样式
Each(SetOrder._arr, function(o){ o.className = ""; })
o.className = order.Down ? "down" : "up";
//排序显示
order.Sort();
return false;
}
//_arr是记录排序项目(这里主要用来设置样式)
SetOrder._arr ? SetOrder._arr.push(o) : SetOrder._arr = [];
}
SetOrder("idTitle", 0);
SetOrder("idExt", 0, { Attribute: "_ext" });
SetOrder("idAddtime", 1, { Attribute: "_order", DataType: "date" });
SetOrder("idSize", 2, { Attribute: "_order", DataType: "int" });
var order2 = to.Add(0, {
Compare: function(o1, o2) {
var value1 = /x/i.test(to.GetValue(o1)), value2 = /x/i.test(to.GetValue(o2));

if(value1 && !value2){
return 1;
} else if (!value1 && value2){
return -1;
} else {
return 0;
}


//return value1 < value2 ? -1 : value1 > value2 ? 1 : 0;
}
});
$("idBtn").onclick = function(){
order2.Sort();
}
</script>
</body>
</html>

分享到:
评论

相关推荐

    smartTable-2.2.0.zip

    表格固定左序列、顶部序列、第一行、列标题、统计行; 自动统计,排序(自定义统计规则); 表格图文、序列号、列标题格式化; 表格各组成背景、文字、网格、padding等配置; 表格批注; 表格内容、列标题点击事件;...

    一款android自动生成表格框架smartTable-master.zip

    表格固定左序列、顶部序列、第一行、列标题、统计行; 自动统计,排序(自定义统计规则); 表格图文、序列号、列标题格式化; 表格各组成背景、文字、网格、padding等配置; 表格批注; 表格内容、列标题点击事件;...

    Android代码-好用漂亮的Android表格框架,样式丰富。

    表格固定左序列、顶部序列、第一行、列标题、统计行; 自动统计,排序(自定义统计规则); 表格图文、序列号、列标题格式化; 表格各组成背景、文字、网格、padding等配置; 表格批注; 表格内容、列标题点击事件;...

    苹果8XPC和手机二合一完整版

    每个模版都可定义不同的样式,所以系统内置的功能的相关文件也都放在了模版里,每个模版里存储一份,避免替换系统目录下的其他文件。 ads/ 存放广告js文件,可自定义名称, 在当前模版路径的config.xml 里配置好 ...

    SQL语法大全

    rs.absolutepage=N 将记录指针移到第N页的第一行 rs.pagesize=N 设置每页为N条记录 rs.pagecount 根据 pagesize 的设置返回总页数 rs.recordcount 返回记录总数 rs.bof 返回记录指针是否超出数据表首端,true表示是...

    listview基本用法

    //返回选中行第一列的值. 第1列的值: --&gt;&gt;&gt; ListView1.Selected.Caption 第i列的值(i&gt;1):--&gt;&gt;&gt; ListView1.Selected.SubItems.Strings[i] ListView1.Items.Item[1].SubItems.GetText); //取得listview某行某...

    MYSQL常用命令大全

     1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。  2、你可以使用光标上下键调出以前的命令...

    同学的打包代码

    程序运行的初始参数从某个指定的配置文件中读取(该文件名作为第一个参数传递给程序)。配置文件的格式详见范例文件。 学生的初始房间分配情况从某个指定的文件中读取(该文件名作为第二个参数传递给程序)。该文件...

    FastReport4中文使用手册

    第一章 设计...7 11、控......9 12、鼠标操作............ .........9 13、工具栏.10 131、设计模式工具栏............10 132、“标准”工具栏.............10 133、“文本”工具栏............

    《程序天下:JavaScript实例自学手册》光盘源码

    第1章 页面特效 1.1 HTML页面反向显示 1.2 页面自动最大化 1.3 页面自动刷新 1.4 页面的后退、刷新、前进 1.5保护网页源代码 1.6 保护自己的网页不被放入框架 1.7 保护自己的网页不被放入框架 1.8 打印页面的出错...

    程序天下:JavaScript实例自学手册

    第1章 页面特效 1.1 HTML页面反向显示 1.2 页面自动最大化 1.3 页面自动刷新 1.4 页面的后退、刷新、前进 1.5保护网页源代码 1.6 保护自己的网页不被放入框架 1.7 保护自己的网页不被放入框架 1.8 打印页面的出错...

    数据库查询、分析工具 - 1.0.0.7 20190616

    点击需要复制的第一列的列标题,然后按住‘Shift’键再点击需要复制的最后一列的列标题(按列复制时要求这些列必须相邻), 选择完毕后,在所选行上点击鼠标右键选择‘Copy’菜单进行复制。 ‘Copy’菜单有2个,...

    MySQL命令大全

    -d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table 4.导入数据库 A:常用source 命令 进入mysql数据库控制台, 如mysql -u root -p mysql&gt;use 数据库 然后使用source命令,后面参数为脚本...

    余烬表

    Ember Table可以处理超过100,000行,而没有任何呈现或性能问题。 此版本的Ember Table支持Ember 1.11到最新版本的Ember。安装ember install ember-table产品特点列大小调整,列重新排序。 表调整大小。 固定第一列...

    birt帮助文档中文版

    在每组的第一行中显示组标题 用一行分隔每组 任务 9:在 BIRT 报告查看器中预览报告 任务 10:在目录中显示贷记限额范围 第九章、聚集数据 如何在表达式构建器中构造聚集表达式 第十章、编写表达式 第...

    birt中文帮助文档

    在每组的第一行中显示组标题 用一行分隔每组 任务 9:在 BIRT 报告查看器中预览报告 任务 10:在目录中显示贷记限额范围 第九章、聚集数据 如何在表达式构建器中构造聚集表达式 第十章、编写表达式 第十一章、过滤...

    H3BPM 试用系统操作手册

    在流程设计阶段预设的参与者,执行并签(参与者互不影响),只要有1个参与者选择提交(同意),其它参与者可以不用再审批,直接流转至下一节点。 演示过程 在Portal门户的流程中心中发起【演示功能-&gt;多人活动】...

    最新Java面试宝典pdf版

    1. 判断第二个日期比第一个日期大 82 2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? ...

Global site tag (gtag.js) - Google Analytics