>  기사  >  웹 프론트엔드  >  JavaScript 고급 프로그래밍 읽기 노트(19) js table sorting_javascript 기술

JavaScript 고급 프로그래밍 읽기 노트(19) js table sorting_javascript 기술

WBOY
WBOY원래의
2016-05-16 17:50:51914검색

排序代码

复代码 代码如下:

function SortTable(sTableID, iCol, sDataType){
this.oTable=document.getElementById(sTableID);
this.oTBody=this.oTable.tBodies[0];
this.colDataRows=this.oTBody.rows;
this.aTRs=[];
this.iCol=iCol;
this.sDataType=sDataType;
}
SortTable.prototype={
convert:function(sValue, sDataType){
switch(sDataType){
case "int":
return parseInt(sValue);
case "float":
return parsFloat(sValue);
case "date":
새 Date(sValue)를 반환합니다.
기본값:
sValue.toString()을 반환합니다.
}
},
generateCompareTRs:function(iCol, sDataType, that){
반환 함수 CompareTRs(oTR1,oTR2){
var vValue1= that.convert(oTR1.cells[iCol ].firstChild.nodeValue, sDataType),
vValue2= that.convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
if(vValue1 < vValue2){
return -1;
} else if(vValue1 > vValue2){
return 1;
} else{
0을 반환합니다.
}
};
},
sort:function(){
for(var i=0,l=this.colDataRows.length;ithis.aTRs.push(this. colDataRows[i]);
}
if(this.oTable.sortCol === this.iCol){
this.aTRs.reverse();
} else {
this.aTRs.sort(this.generateCompareTRs(this.iCol, this.sDataType, this));
}
var oFragment=document.createDocumentFragment();
for(var i=0,l=this.aTRs.length;ioFragment.appendChild(this.aTRs[i]);
}
this.oTBody.appendChild(oFragment);
this.oTable.sortCol = this.iCol;
}
}

调用示例
复代码 代码如下:

함수 binSortTable(sTableID, iCol, sDataType){
var table=document.getElementById(sTableID),
ftr=table.tHead.rows[0],
tds=ftr .셀;
if(tds[iCol]){
tds[iCol].onclick=function(){
var sortTable=new SortTable(sTableID, iCol, sDataType);
sortTable.sort();
}
}
}
window.onload=function(){
bindSortTable("tblSort",0);
bindSortTable("tblSort",1);
bindSortTable("tblSort",2,"int");
bindSortTable("tblSort",3,"float");
bindSortTable("tblSort",4,"날짜");
}

完整데모:

[Ctrl A 全选 注:如需引入외부 Js需刷新才能执行
]

작성자:Artwl 출처: http://artwl.cnblogs.com
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.