<body>
<table id="t1">
<thead>
<tr>
<th οnclick="sortTable('t1',0);" style="cursor:pointer;">User ID</th>
<th οnclick="sortTable('t1',1)" style="cursor:pointer;">userName</th>
</tr>
</thead>
<tbody>
<tr>
<td>123</td><td>simier</td>
</tr>
<tr>
<td>43</td><td>java_min</td>
</tr>
<tr>
<td>432</td><td>hello</td>
</tr>
<tr>
<td>112</td><td>ajax</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
function generateCompareTRs(iCol){
return function compareTRs(tr1,tr2){
var v1 = tr1.cells.item(iCol).firstChild.nodeValue;
var v2 = tr2.cells.item(iCol).firstChild.nodeValue;
var a = parseInt(v1);
var b = parseInt(v2);
if(!isNaN(a) && !isNaN(b)){
return a -b;
}else{
return v1.localeCompare(v2);
}
};
}
function sortTable(tableId,icol){
var tab = document.getElementById(tableId);
var tbod = tab.tBodies.item(0);
var orows = tbod.rows;
var arr = new Array();
for(var i=0;i<orows.length;i++){
arr.push(orows.item(i));
}
arr.sort(generateCompareTRs(icol));
var frag = document.createDocumentFragment();
for(var i=0;i<arr.length;i++){
frag.appendChild(arr[i]);
}
tbod.appendChild(frag);
}
</script>
</body>
若想使用双向排序,添加以下代码:
tab.sortCol = icol;
if(tab.sortCol == icol){
arr.reverse();
}