1。比較関数ジェネレーター:
次のようにコードコードをコピーします。
/**
*比較関数ジェネレーター
*
* @param Icol
*データの数
* @param sdatatype
*行のデータ型
* @戻る
*/
関数GenerateComparetrs(icol、sdatatype){
戻り関数の比較(OTR1、OTR2){
vvalue1 = convert(otr1.cells [icol] .firstchild.nodevalue、sdatatype);
vvalue2 = convert(otr2.cells [icol] .firstchild.nodevalue、sdatatype);
if(vvalue1 <vvalue2){
return -1;
} else if(vvalue1> vvalue2){
返品1;
} それ以外 {
0を返します。
}
};
}
2。プロセス比較文字タイプ:
次のようにコードコードをコピーします。
/**
*ソートされたフィールドタイプを処理します
*
* @param svalue
*フィールド値はデフォルトで文字タイプになります。つまり、ASCIIコードを比較します
* @param sdatatype
*フィールドタイプは、mm/dd/yyyyまたはmmmm dd、yyyyyの形式のみをサポートしています(2004年1月12日)
* @戻る
*/
関数変換(SValue、sdatatype){
switch(sdatatype){
ケース "int":
parseint(svalue)を返す;
ケース「フロート」:
parsefloat(svalue)を返します。
ケース「日付」:
新しい日付(date.parse(svalue))を返す;
デフォルト:
return svalue.toString();
}
}
3。主な関数:
次のようにコードコードをコピーします。
/**
*テーブルヘッダーでテーブル列を並べ替えます
*
* @param stableid
*テーブルIDを処理します<table id = ''>
* @param Icol
*フィールド列ID EG:0 1 2 3 ...
* @param sdatatype
*フィールドデータ型int、float、日付はデフォルトで処理されます。
*/
関数SORTTABLE(StableID、ICOL、SDATATYPE){
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];
}
if(otable.sortcol == icol){
Atrs.Reverse();
} それ以外 {
Atrs.Sort(GenerateComparetrs(icol、sdatatype));
}
var ofragment = document.createdocumentfragment();
for(var j = 0; j <atrs.length; j ++){
Ofragment.AppendChild(ATRS [J]);
}
otbody.appendchild(ofragment);
otable.sortcol = icol;
}
上記の質問コードをJSファイルにカプセル化し、HTMLページで参照します。
テストtest.html:
次のようにコードコードをコピーします。
<html xmlns = "http://www.w3.org/1999/xhtml">
<title>テーブル列sort </ title>
<script type = "text/javascript" src = "js/sorttable.js"> </script>
<body>
<table border = "1" id = "tblsort">
<thead style = "color:red; bgcolor:blank">
<tr>
<onclick = "sorttable( 'tblsort'、0);" cursor:pointer "> lastname </ th>
<onclick = "sorttable( 'tblsort'、1、 'int');" cursor:pointer "> number </ th>
<onclick = "sorttable( 'tblsort'、2、 'date');" cursor:pointer "> date </ th>
</ tr>
</ thead>
<tbody>
<tr>
<td> a </ td>
<td> 1 </ td>
<td> 5/9/2008 </td>
</ tr>
<tr>
<td> b </ td>
<td> 3 </ td>
<td> 6/9/2008 </td>
</ tr>
<tr>
<td> d </ td>
<td> 6 </ td>
<td> 2008年5月4日</td>
</ tr>
<tr>
<td> e </ td>
<td> -5 </ td>
<td> 2007年5月4日</td>
</ tr>
<tr>
<td> h </ td>
<td> 34 </ td>
<td> 2008年5月8日</td>
</ tr>
<tr>
<td> c </ td>
<td> 12 </ td>
<td> 1/4/2018 </td>
</ tr>
</ tbody>
</ table>
</ body>
</ html>