楼主把字符串和数字的比较搞反了.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<table id="tblSort" width="600" border="0" cellspacing="0" cellpadding="0">
<thead>排序</thead>
<tbody>
<tr><td>dsf</td></tr>
<tr><td>bb</td></tr>
<tr><td>asd</td></tr>
<tr><td>zz</td></tr>
<tr><td>oo</td></tr>
</tbody>
</table>
</body>
<script>
function sorttable(id){
var tab = document.getElementById(id)
var tbody = tab.tBodies[0]
var hang = tbody.rows
var arr = new Array()
for (var i = 0; i < hang.length; i++) {
arr.push(hang[i])
}
if (typeof(arr[0]) == "number") {
arr.sort(compareN)
}
else {
arr.sort(compareA)
}
var suipian = document.createDocumentFragment();
for (var i = 0; i < arr.length; i++) {
suipian.appendChild(arr[i])
}
tbody.appendChild(suipian)
function compareN(arr1, arr2){
var a1 = arr1.cells[0].firstChild.nodeValue
var a2 = arr2.cells[0].firstChild.nodeValue
return a1 - a2;
}
function compareA(arr1, arr2){
var a1 = arr1.cells[0].firstChild.nodeValue;
var a2 = arr2.cells[0].firstChild.nodeValue;
return ( a1.localeCompare(a2));
}
}
sorttable("tblSort")
</script>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<table id="tblSort" width="600" border="0" cellspacing="0" cellpadding="0">
<thead>排序</thead>
<tbody>
<tr><td>dsf</td></tr>
<tr><td>bb</td></tr>
<tr><td>asd</td></tr>
<tr><td>zz</td></tr>
<tr><td>oo</td></tr>
</tbody>
</table>
</body>
<script>
function sorttable(id){
var tab = document.getElementById(id)
var tbody = tab.tBodies[0]
var hang = tbody.rows
var arr = new Array()
for (var i = 0; i < hang.length; i++) {
arr.push(hang[i])
}
if (typeof(arr[0]) == "number") {
arr.sort(compareN)
}
else {
arr.sort(compareA)
}
var suipian = document.createDocumentFragment();
for (var i = 0; i < arr.length; i++) {
suipian.appendChild(arr[i])
}
tbody.appendChild(suipian)
function compareN(arr1, arr2){
var a1 = arr1.cells[0].firstChild.nodeValue
var a2 = arr2.cells[0].firstChild.nodeValue
return a1 - a2;
}
function compareA(arr1, arr2){
var a1 = arr1.cells[0].firstChild.nodeValue;
var a2 = arr2.cells[0].firstChild.nodeValue;
return ( a1.localeCompare(a2));
}
}
sorttable("tblSort")
</script>
</html>
var a = new Array();
a.push(new Date("2008/3/1"));
a.push(new Date("1993/12/28"));
a.push(new Date("1992/5/12"));
a.push(new Date("1998/7/24"));
a.sort(function(a,b){
return a.getTime() - b.getTime();
});alert(a.toString());