表格排序


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<script language="javascript">
function compare(value1,value2,type){
switch (type)
{
case "int":
if(parseInt(value1)==parseInt(value2)){
return 0;
}else{
return parseInt(value1)>parseInt(value2)?1:-1;
}
case "float":
if(parseFloat(value1)==parseFloat(value2)){
return 0;
}else{
return parseFloat(value1)>parseFloat(value2)?1:-1;
}
case "date":
var date1 = new Date(Date.parse(value1));
var date2 = new Date(Date.parse(value2));
if(date1==date2){
return 0;
}else{
return date1>date2?1:-1;
}
default:
var value1 = value1.toString();
var value2 = value2.toString();
return value1.localeCompare(value2);
}
}

function swapNode(node1,node2){
//获取父结点
var _parent=node1.parentNode;
//获取两个结点的相对位置
var _t1=node1.nextSibling;
var _t2=node2.nextSibling;
//将node2插入到原来node1的位置
if(_t1)_parent.insertBefore(node2,_t1);
else _parent.appendChild(node2);
//将node1插入到原来node2的位置
if(_t2)_parent.insertBefore(node1,_t2);
else _parent.appendChild(node1);
}

function ascSort(stable,index,type){
var mytable = document.getElementById(stable);
var trObj = mytable.rows;

for(var i=1;i<trObj.length-1;i++){
for(var j=1;j<trObj.length-1;j++){
var colValue1 = trObj[j].cells[index].innerText;
var colValue2 = trObj[j+1].cells[index].innerText;

var result = compare(colValue1,colValue2,type);
//alert("colValue1: "+colValue1+" colValue2: "+colValue2+" result="+result);
if(result==1){
swapNode(trObj[j],trObj[j+1]);
}
}
}
}

function descSort(stable,index,type){
var mytable = document.getElementById(stable);
var trObj = mytable.rows;

for(var i=1;i<trObj.length-1;i++){

for(var j=1;j<trObj.length-1;j++){
var colValue1 = trObj[j].cells[index].innerText;
var colValue2 = trObj[j+1].cells[index].innerText;

var result = compare(colValue1,colValue2,type);

//alert("___colValue1: "+colValue1+" colValue2: "+colValue2+" result="+result);
if(result==-1){
swapNode(trObj[j],trObj[j+1]);
}
}
}
}

function sortTable(stable,index,type){
var tag = index;
if(mytable.sortCol == index){
descSort(stable,index,type);
tag = undefined;
}else{
ascSort(stable,index,type);
}
mytable.sortCol = tag;
}
</script>

<BODY>
<br>
<br>
<center>
<table id="mytable" border="1" width="88%">
<thead>
<tr style="cursor:pointer">
<th onClick="sortTable('mytable',0,'string')">姓名</th>
<th onClick="sortTable('mytable',1,'int')">年龄</th>
<th onClick="sortTable('mytable',2,'string')">身高</th>
</tr>
</thead>
<tbody>
<tr>
<td>a</td>
<td>3</td>
<td>吧</td>
</tr>
<tr>
<td>b</td>
<td>8</td>
<td>啊</td>
</tr>
<tr>
<td>c</td>
<td>1</td>
<td>张</td>
</tr>
<tr>
<td>c</td>
<td>65</td>
<td>刘</td>
</tr>
</tbody>
</table>
<br>


</center>

</BODY>
</HTML>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值