1.比較函數產生器:
程式碼如下:
/
/* *
* 比較函數產生器
*
* @param iCol
* 模式種
* @return
*/
function generateCompareTRs(iCol, sDataType) {
return function compareTRs(oTR1, oTR2) { . Value, sDataType);
vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
-1;
} else if (vValue1 > vValue2) {
return 1;
} else {
}
};
}
2.處理比較字元類型:
/**
* 處理排序的欄位類型
*
* @param sValue
* 字段類型對於date只支援格式為mm/dd/yyyy或mmmm dd,yyyy(January 12,2004)
* @return
*/
function , sDataType) {
switch (sDataType) {
case "int" :
🎜> return parseFloat(sValue);
case "date" :
return new Date(Date.parse(sValue));
🎜>}
3.主函數:
複製程式碼
程式碼如下:
* @param sDataType
* 此欄位資料類型int,float,date 缺省情況下當 此欄位資料類型int,float,date 缺省情況下當 此欄位資料型態 */
function sortTable(sTableID, iCol, sDataType) {
var oTable = document.getElementById(sTableID);
ws = oTBody.rows ;
var aTRs = new Array;
for ( var i = 0; i if (oTable.sortCol == iCol) {
aTRs.reverse();
} else {
🎜> var oFragment = document .createDocumentFragment();
for ( var j = 0; j appendChild(oFragment) ;
oTable.sortCol = iCol;
}
將以上問代碼封裝到一個js檔案中,在html頁面中引用。
測試test.html:
表格列排序 title >
script >
Number th >
tr >
thead >
td > A td >
1 td >
5/9/2008 td >
B td >
3 td >
6/9/2008 td >
D td >
6 td >
5/4/2008 td >
E td >
-5 td >
5/4/2007 td >
H td >
34 td >
5/8/2008 td >
C td >
12 td >
1/4/2018 td >
tr >
tr >
>