코드: 네티즌이 작성한 코드를 복사했는데, 어디서 왔는지 기억이 나지 않습니다. 중국어 정렬 및 컨트롤 값 정렬을 지원하도록 변경되었습니다. 방법이 없어요, 능력이 제한되어 있어서 할 수 밖에 없어요. . .
//Converter, 필드 유형을 변환합니다. 정렬할 수 있는 유형에 대한 열: String, int, float
function Convert(sValue, sDataType)
{
switch(sDataType)
{
case "int":
return parseInt(sValue );
case "float":
return parsFloat(sValue);
case "date":
return new Date(Date.parse(sValue)); :
return sValue.toString();
}
}
// 한자 정렬 방법
function chrComp(a,b)
{
return a.localeCompare( b)
}
//정렬 함수 생성기
function generateCompareTRs(iCol, sDataType,isinput,sDec)
{
return 함수 CompareTRs(oTR1, oTR2)
{
if(isinput == 1)
{
var vValue1 = 변환(oTR1.getElementsByTagName("input")[iCol].value);
var vValue2 = 변환(oTR2.getElementsByTagName("input") )[iCol] .value);
}
else
{
var vValue1 = 변환(oTR1.cells[iCol].firstChild.nodeValue, sDataType)
var vValue2 = 변환( oTR2.cells[ iCol].firstChild.nodeValue, sDataType);
}
if(sDec=='desc')
{
if(sDataType=='int')
{
return vValue1 == vValue2 ? 0 :(vValue1 - vValue2 <0 ? 1 : -1)
}
else if(sDataType =='cn')
{
if (chrComp(vValue1 ,vValue2)>0)
{
return -1
}
else if(chrComp(vValue1,vValue2)<0)
{
return 1;
}
else
{
return 0
}
}
else
{
if (vValue1 > vValue2) {
return -1; else if (vValue1 < vValue2) {
return 1
} else {
return 0; else if(sDec =='asc')
{
if(sDataType=='int')
{
return vValue1 == vValue2 ? 0 :(vValue1 - vValue2 >0 ? 1 : -1) ;
}
else if(sDataType =='cn')
{
return chrComp(vValue1,vValue2)
}
else
{
if ( vValue1 > vValue2) {
return 1;
} else if (vValue1 < vValue2) {
return -1
} else {
return 0; >}
}
}
};
}
//셀의 클래스 이름 재설정
function ChangeClsName(tr,num)
{
num = num %2?1 :2;
num.toString();
for ( var i = 0 ; i < tr.childNodes.length; i )
{
tr.childNodes[i] .className = " row" num
}
}
/*Sort 메서드(주 함수)
sTableID 테이블 ID
iCol은 입력이 아닌 경우 열 인덱스
1을 나타냅니다. type, iCol은 tr의 td를 나타냅니다.
2, 입력 유형인 경우 iCol은 tr의 입력을 나타냅니다.
sDataType은 셀의 데이터 유형 또는 입력 값의 데이터 유형을 나타냅니다. . 기본값은 문자열이며 int, float일 수도 있습니다. cn은 중국어입니다.
isinput은 정렬된 내용이 입력인지 여부를 나타냅니다(1 예, 0 아니오).
sDec은 역순 또는 기본 순서를 나타냅니다. ), 입력을 피하기 위해 값이 변경된 후 다시 정렬하면 순서가 바로 반전됩니다.
*/
function sortTable(sTableID, iCol, sDataType, isinput, sDec)
{
var oTable = document.getElementById(sTableID)
var oTBody = oTable.tBodies[0] ;
var colDataRows = oTBody.rows;
var aTRs = new Array;
//모든 열을 배열에 넣습니다
(var i=0; i < colDataRows.length; i )
{
aTRs[i] = colDataRows[i];
}
aTRs.sort(generateCompareTRs(iCol, sDataType,isinput, sDec))
var oFragment = document.createDocumentFragment( );
for (var i=0; i < aTRs.length; i )
{
oFragment.appendChild(aTRs[i])
ChangeClsName(aTRs[i],i) ;
}
oTBody.appendChild(oFragment);
}
드디어 배우고 싶었던 jquery를 공부할 시간이 생겼습니다. 회사에서 사용할 수 없다는 것이 아쉽습니다. 사실 배우고 난 후에도 사용할 수 있다는 느낌이 듭니다. jqery를 알게 된 후, 다른 사람들의 플러그인을 살펴보았습니다. jquery.tablesorter.js 이 플러그인은 매우 강력합니다. 시도해 보니 중국어를 지원하지 않는 것으로 나타났습니다. 소스 코드를 보면
코드를 복사합니다
코드는 다음과 같습니다.
/* 정렬 방법 */
function multisort(table,sortList,cache) {
if(table.config.debug) { var sortTime = new Date(); }
var DynamicExp = "var sortWrapper = function(a,b) {", l = sortList.length;
for(var i=0; i < l; i ) {
var c = sortList[i][0];
var order = sortList[i][1];
var s = (getCachedSortType(table.config.parsers,c) == "text") ? ((order == 0) ? "sortText" : "sortTextDesc") : ((order == 0) ? "sortNumeric" : "sortNumericDesc");
var e = "e" i;
dynamicExp = "var " e " = " s "(a[" c "],b[" c "]); ";
dynamicExp = "if(" e ") { return " e "; } ";
dynamicExp = "else { ";
}
for(var i=0; i < l; i ) {
dynamicExp = "}; ";
}
dynamicExp = "0을 반환합니다; ";
dynamicExp = "}; ";
평가(dynamicExp);
cache.normalized.sort(sortWrapper);
if(table.config.debug) { benchmark("" sortList.toString() " 및 dir " order " time:", sortTime)에 대한 정렬; }
캐시 반환;
};
function sortText(a,b) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
};
function sortTextDesc(a,b) {
return ((b a) ? 1 : 0));
};
function sortNumeric(a,b) {
return a-b;
};
function sortNumericDesc(a,b) {
return b-a;
};
function getCachedSortType(parsers,i) {
return 파서[i].type;
};
一开始还以为会遇到一些困难的입니다.
function sortText(a,b) {
return a.localeCompare(b);
};
function sortTextDesc(a,b) {
return -a.localeCompare(b);
};
测试一下。中文,中英文一起,中间有列为空等道没问题了。
本来这个插件是有一个jquery.tablesorter.pack.js 压缩过后要怎么把它变成jquery.tablesorter.pack.js는 就不知道了입니다.
ps:当然这个插件还多扩要功能,例如多列排序,各种例子等序有文档可以参考的.给我