LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

利用JavaScript对表格数据进行排序

admin
2010年3月8日 1:33 本文热度 12691
这是一个利用javascript结合css实现的对表格进行排序的代码,点击表头会自动排序,至于由哪种规则排序这个由你决定,表格排序现在用的也非常多。此实例实现的是降序、升序排列。
[code]



表格排序的实现


































kick mekick mekick mekick me
15.43 700 1.220
7.05 4 3,000
30.62 30 2,558,800
22.30 56
26.31 0.65 -
63.16 74

<script type="text/javascript">

var tableSort = function(){
this.initialize.apply(this,arguments);
}

tableSort.prototype = {

initialize : function(tableId,clickRow,startRow,endRow,classUp,classDown,selectClass){
this.Table = document.getElementById(tableId);
this.rows = this.Table.rows;//所有行
this.Tags = this.rows[clickRow-1].cells;//标签td
this.up = classUp;
this.down = classDown;
this.startRow = startRow;
this.selectClass = selectClass;
this.endRow = (endRow == 999? this.rows.length : endRow);
this.T2Arr = this._td2Array();//受影响的td二维数组
this.setShow();
},
//标签切换
setShow:function(){
var defaultClass = this.Tags[0].className;
for(var Tag ,i=0;Tag = this.Tags[i];i++){
Tag.index = i;
addEventListener(Tag ,'click', Bind(Tag,statu));
}
var _this =this;
var turn = 0;
function statu(){
for(var i=0;i<_this.Tags.length;i++){
_this.Tags[i].className = defaultClass;
}
if(turn==0){
addClass(this,_this.down)
_this.startArray(0,this.index);
turn=1;
}else{
addClass(this,_this.up)
_this.startArray(1,this.index);
turn=0;
}
}
},
//选中列样式
colClassSet:function(num,cla){
//得到关联到的td
for(var i= (this.startRow-1);i<(this.endRow);i++){
for(var n=0;n removeClass(this.rows[i].cells[n],cla);
}
addClass(this.rows[i].cells[num],cla);
}
},
//开始排序 num 根据第几列排序 aord 逆序还是顺序
startArray:function(aord,num){
var afterSort = this.sortMethod(this.T2Arr,aord,num);//排序后的二维数组传到排序方法中去
this.array2Td(num,afterSort);//输出
},
//将受影响的行和列转换成二维数组
_td2Array:function(){
var arr=[];
for(var i=(this.startRow-1),l=0;i<(this.endRow);i++,l++){
arr[l]=[];
for(var n=0;n arr[l].push(this.rows[i].cells[n].innerHTML);
}
}
return arr;
},
//根据排序后的二维数组来输出相应的行和列的 innerHTML
array2Td:function(num,arr){
this.colClassSet(num,this.selectClass);
for(var i= (this.startRow-1),l=0;i<(this.endRow);i++,l++){
for(var n=0;n this.rows[i].cells[n].innerHTML = arr[l][n];
}
}
},
//传进来一个二维数组,根据二维数组的子项中的w项排序,再返回排序后的二维数组
sortMethod:function(arr,aord,w){
//var effectCol = this.getColByNum(whichCol);
arr.sort(function(a,b){
x = killHTML(a[w]);
y = killHTML(b[w]);
x = x.replace(/,/g,'');
y = y.replace(/,/g,'');
switch (isNaN(x)){
case false:
return Number(x) - Number(y);
break;
case true:
return x.localeCompare(y);
break;
}
});
arr = aord==0?arr:arr.reverse();
return arr;
}
}
/*-----------------------------------*/
function addEventListener(o,type,fn){
if(o.attachEvent){o.attachEvent('on'+type,fn)}
else if(o.addEventListener){o.addEventListener(type,fn,false)}
else{o['on'+type] = fn;}
}

function hasClass(element, className) {
var reg = new RegExp('(\\s│^)'+className+'(\\s│$)');
return element.className.match(reg);
}

function addClass(element, className) {
if (!this.hasClass(element, className))
{
element.className += " "+className;
}
}

function removeClass(element, className) {
if (hasClass(element, className)) {
var reg = new RegExp('(\\s│^)'+className+'(\\s│$)');
element.className = element.className.replace(reg,' ');
}
}

var Bind = function(object, fun) {
return function() {
return fun.apply(object, arguments);
}
}
//去掉所有的html标记
function killHTML(str){
return str.replace(/<[^>]+>/g,"");
}
//------------------------------------------------
//tableid 第几行是标签行,从第几行开始排序,第几行结束排序(999表示最后) 升序标签样式,降序标签样式 选中列样式
//注意标签行的class应该是一致的
var ex1 = new tableSort('table',1,2,999,'up','down','hov');
</script>

[/code]

该文章在 2010/3/8 1:33:32 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-2  粤公网安备44030602007207号