Heim  >  Artikel  >  Web-Frontend  >  jquery implementiert die Sortierung nach chinesischen Tabellen

jquery implementiert die Sortierung nach chinesischen Tabellen

php中世界最好的语言
php中世界最好的语言Original
2018-04-26 16:10:071615Durchsuche

Dieses Mal bringe ich Ihnen jquery zum Sortieren nach chinesischen Tabellen. Was sind die Vorsichtsmaßnahmen für jquery, um das Sortieren nach chinesischen Tabellen zu implementieren?

//转换器,将列的字段类型转换为可以排序的类型:String,int,float 
function convert(sValue, sDataType) 
{ 
switch(sDataType) 
{ 
case "int": 
return parseInt(sValue); 
case "float": 
return parseFloat(sValue); 
case "date": 
return new Date(Date.parse(sValue)); 
default: 
return sValue.toString(); 
} 
} 
// 汉字排序方法 
function chrComp(a,b) 
{ 
return a.localeCompare(b); 
} 
//排序函数产生器 
function generateCompareTRs(iCol, sDataType,isinput,sDec) 
{ 
return function compareTRs(oTR1, oTR2) 
{ 
if(isinput == 1) 
{ 
var vValue1 = convert(oTR1.getElementsByTagName("input")[iCol].value); 
var vValue2 = convert(oTR2.getElementsByTagName("input")[iCol].value); 
} 
else 
{ 
var vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType); 
var vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType); 
} 
if(sDec=='desc') 
{ 
if(sDataType=='int') 
{ 
return vValue1 == vValue2 ? 0 :(vValue1 - vValue2 <0 ? 1 : -1); 
} 
else if(sDataType ==&#39;cn&#39;) 
{ 
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==&#39;asc&#39;) 
{ 
if(sDataType==&#39;int&#39;) 
{ 
return vValue1 == vValue2 ? 0 :(vValue1 - vValue2 >0 ? 1 : -1); 
} 
else if(sDataType ==&#39;cn&#39;) 
{ 
return chrComp(vValue1,vValue2); 
} 
else 
{ 
if (vValue1 > vValue2) { 
return 1; 
} else if (vValue1 < vValue2) { 
return -1; 
} else { 
return 0; 
} 
} 
} 
}; 
} 
//重置单元格的classname 
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 
} 
} 
/*排序方法(主函数)

sTableID-Tabellen-ID
iCol repräsentiert den Spaltenindex
1, wenn es sich nicht um einen Eingabetyp handelt, iCol repräsentiert den td von tr
2, wenn es sich um einen Eingabetyp handelt. dann stellt iCol die Eingabenummer in diesem tr dar;
sDataType stellt den Datentyp der Zelle oder den Datentyp des Eingabewerts dar. Der Standardwert ist string, kann aber auch int sein. float. cn Es ist Chinesisch.
isinput gibt an, ob der sortierte Inhalt eingegeben wird (1 ja, 0 nein).
sDec gibt die umgekehrte Reihenfolge oder Reihenfolge (desc, Standardreihenfolge) an, um eine direkte umgekehrte Reihenfolge beim Sortieren nach der Eingabe zu vermeiden Wertänderungen.

*/ 
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; 
//将所有列放入数组 
for (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); 
}

Ich habe diese Woche endlich Zeit, JQuery zu lernen, was ich schon immer lernen wollte. Schade, dass das Unternehmen es nicht nutzen kann. Nachdem ich es gelernt habe, habe ich immer noch das Gefühl, dass es verwendet werden kann. Nachdem ich jqery kennengelernt hatte, schaute ich mir die Plug-Ins anderer Leute an. jquery.tablesorter.js Dieses Plug-in ist ziemlich leistungsfähig. Ich habe es ausprobiert und festgestellt, dass Chinesisch nicht unterstützt wird. Schauen Sie sich den Quellcode an und dort steht

/* sorting methods */ 
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 += "return 0; "; 
dynamicExp += "}; "; 
eval(dynamicExp); 
cache.normalized.sort(sortWrapper); 
if(table.config.debug) { benchmark("Sorting on " + sortList.toString() + " and dir " + order+ " time:", sortTime); } 
return cache; 
}; 
function sortText(a,b) { 
return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 
}; 
function sortTextDesc(a,b) { 
return ((b < a) ? -1 : ((b > a) ? 1 : 0)); 
}; 
function sortNumeric(a,b) { 
return a-b; 
}; 
function sortNumericDesc(a,b) { 
return b-a; 
}; 
function getCachedSortType(parsers,i) { 
return parsers[i].type; 
};

. Zuerst dachte ich, ich würde auf einige Schwierigkeiten stoßen. Unerwarteterweise muss ich nur seine Sortierfunktion ändern und es wird in Ordnung sein.

function sortText(a,b) { 
return a.localeCompare(b); 
}; 
function sortTextDesc(a,b) { 
return -a.localeCompare(b); 
};

Testen Sie es. Chinesisch, Chinesisch und Englisch zusammen, wenn sich in der Mitte eine Spalte befindet, ist das kein Problem.
Ursprünglich verfügt dieses Plug-in über jquery.tablesorter.pack.js, das nach der Komprimierung nur 9 KB groß ist, aber ich werde nur jquery.tablesorter.js (23 KB) ändern. Ich weiß nicht, wie ich daraus jquery.tablesorter.pack.js umwandeln soll.
ps: Natürlich verfügt dieses Plug-in auch über viele erweiterte Funktionen, wie z. B. mehrspaltige Sortierung, verschiedene Beispiele usw. Es gibt Dokumente als Referenz.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

jquery implementiert Tabellenpaging und -sortierung

jQuery-domänenübergreifender Iframe-Schnittstellenaufruf (mit Code)

Das obige ist der detaillierte Inhalt vonjquery implementiert die Sortierung nach chinesischen Tabellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn