//搜一下jq这个方法 $("#id").toggle( function () { //这里做操作 }, function () { //这里做操作 } );
你试一下这个代码<html> <head> <title>Table Sort Example</title> <meta http-equiv="Content-Type" content="text/html; charset=GB2312"/> <script type="text/javascript"> <!-- //转换器,将列的字段类型转换为可以排序的类型:String,int,float function convert(sValue, sDataType) { switch(sDataType) { case "int": return parseInt(sValue); case "float": return parseFloat(sValue); case "date": return new Date(Date.parse(sValue)); default: return sValue.toString();
} }
//排序函数产生器,iCol表示列索引,sDataType表示该列的数据类型 function generateCompareTRs(iCol, sDataType) { return function compareTRs(oTR1, oTR2) { var vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType); var vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType); if (vValue1 < vValue2) { return -1; } else if (vValue1 > vValue2) { return 1; } else { return 0; } }; }
//排序方法 function 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]; }
哥哥,你发的这个表头和数据都在一个table里啊
何必要做成2个table?直接参考这个示例,用2组不同的标签就行了,表头用thead,内容用tbody
$("#id").toggle(
function () {
//这里做操作
},
function () {
//这里做操作
}
);
<head>
<title>Table Sort Example</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312"/>
<script type="text/javascript">
<!--
//转换器,将列的字段类型转换为可以排序的类型:String,int,float
function convert(sValue, sDataType) {
switch(sDataType) {
case "int":
return parseInt(sValue);
case "float":
return parseFloat(sValue);
case "date":
return new Date(Date.parse(sValue));
default:
return sValue.toString();
}
}
//排序函数产生器,iCol表示列索引,sDataType表示该列的数据类型
function generateCompareTRs(iCol, sDataType) { return function compareTRs(oTR1, oTR2) {
var vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
var vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType); if (vValue1 < vValue2) {
return -1;
} else if (vValue1 > vValue2) {
return 1;
} else {
return 0;
}
};
}
//排序方法
function 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];
}
//判断最后一次排序的列是否与现在要进行排序的列相同,是的话,直接使用reverse()逆序
if (oTable.sortCol == iCol) {
aTRs.reverse();
} else {
//使用数组的sort方法,传进排序函数
aTRs.sort(generateCompareTRs(iCol, sDataType));
} var oFragment = document.createDocumentFragment();
for (var i=0; i < aTRs.length; i++) {
oFragment.appendChild(aTRs[i]);
} oTBody.appendChild(oFragment);
//记录最后一次排序的列索引
oTable.sortCol = iCol;
}
//-->
</script>
</head>
<body>
<p>Click on the table header to sort in ascending order.</p>
<table border="1" id="tblSort">
<thead>
<tr>
<th onclick="sortTable('tblSort', 0)"
style="cursor:pointer">Last Name</th>
<th onclick="sortTable('tblSort', 1)"
style="cursor:pointer">First Name</th>
<th onclick="sortTable('tblSort', 2, 'date')"
style="cursor:pointer">Birthday</th>
<th onclick="sortTable('tblSort', 3, 'int')"
style="cursor:pointer">Siblings</th>
</tr>
</thead>
<tbody>
<tr>
<td>Smith</td>
<td>John</td>
<td>7/12/1978</td>
<td>2</td>
</tr>
<tr>
<td>Johnson</td>
<td>Betty</td>
<td>10/15/1977</td>
<td>4</td>
</tr>
<tr>
<td>Henderson</td>
<td>Nathan</td>
<td>2/25/1949</td>
<td>1</td>
</tr>
<tr>
<td>Williams</td>
<td>James</td>
<td>7/8/1980</td>
<td>4</td>
</tr>
<tr>
<td>Gilliam</td>
<td>Michael</td>
<td>7/22/1949</td>
<td>1</td>
</tr>
<tr>
<td>Walker</td>
<td>Matthew</td>
<td>1/14/2000</td>
<td>3</td>
</tr>
</tbody>
</table>
</body>
</html>
<head>
<title>Table Sort Example</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" /> <script type="text/javascript">
<!--
//转换器,将列的字段类型转换为可以排序的类型:String,int,float
function convert(sValue, sDataType) {
switch (sDataType) {
case "int":
return parseInt(sValue);
case "float":
return parseFloat(sValue);
case "date":
return new Date(Date.parse(sValue));
default:
return sValue.toString(); }
} //排序函数产生器,iCol表示列索引,sDataType表示该列的数据类型
function generateCompareTRs(iCol, sDataType) { return function compareTRs(oTR1, oTR2) {
var vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
var vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType); if (vValue1 < vValue2) {
return -1;
} else if (vValue1 > vValue2) {
return 1;
} else {
return 0;
}
};
} //排序方法
function 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];
} //判断最后一次排序的列是否与现在要进行排序的列相同,是的话,直接使用reverse()逆序
if (oTable.sortCol == iCol) {
aTRs.reverse();
} else {
//使用数组的sort方法,传进排序函数
aTRs.sort(generateCompareTRs(iCol, sDataType));
} var oFragment = document.createDocumentFragment();
for (var i = 0; i < aTRs.length; i++) {
oFragment.appendChild(aTRs[i]);
} oTBody.appendChild(oFragment);
//记录最后一次排序的列索引
oTable.sortCol = iCol;
}
//-->
</script></head>
<body>
<p>
Click on the table header to sort in ascending order.</p>
<table border="1" id="" style="width:500px;">
<thead>
<tr>
<th onclick="sortTable('tblSort', 0)" style="cursor: pointer" width="25%">
Last Name
</th>
<th onclick="sortTable('tblSort', 1)" style="cursor: pointer" width="25%">
First Name
</th>
<th onclick="sortTable('tblSort', 2, 'date')" style="cursor: pointer" width="25%">
Birthday
</th>
<th onclick="sortTable('tblSort', 3, 'int')" style="cursor: pointer">
Siblings
</th>
</tr>
</thead>
</table>
<table id="tblSort" border="1" style="width:500px;">
<tbody>
<tr>
<td width="25%">
Smith
</td>
<td width="25%">
John
</td>
<td width="25%">
7/12/1978
</td>
<td>
2
</td>
</tr>
<tr>
<td>
Johnson
</td>
<td>
Betty
</td>
<td>
10/15/1977
</td>
<td>
4
</td>
</tr>
<tr>
<td>
Henderson
</td>
<td>
Nathan
</td>
<td>
2/25/1949
</td>
<td>
1
</td>
</tr>
<tr>
<td>
Williams
</td>
<td>
James
</td>
<td>
7/8/1980
</td>
<td>
4
</td>
</tr>
<tr>
<td>
Gilliam
</td>
<td>
Michael
</td>
<td>
7/22/1949
</td>
<td>
1
</td>
</tr>
<tr>
<td>
Walker
</td>
<td>
Matthew
</td>
<td>
1/14/2000
</td>
<td>
3
</td>
</tr>
</tbody>
</table>
</body>
</html>
function sort(obj){
tab3.innerHTML="<table></table>";
var sortCell = tab2.childNodes[0].cells[obj.cellIndex];
//sort规则...
//排序后的sortCell
for(var i=0;i<sortCell.length){
tab3.childNodes[0].appendChild(tab2.childNodes[0].rows[sortCell[i].parentNode.rowIndex]);
}
tab2.innerHTML = tab3.innerHTML;
}
</script>
</head>
<body >
<table id="tab1">
<tr>
<td onclick="sort(this)">A</td><td onclick="sort(this)">B</td><td onclick="sort(this)">C</td>
</tr>
</table>
<div id="tab2">
<table>
<tr>
<td>dataA1</td><td>dataB1</td><td>dataC1</td>
</tr>
<tr>
<td>dataA2</td><td>dataB2</td><td>dataC2</td>
</tr>
<tr>
<td>dataA3</td><td>dataB3</td><td>dataC3</td>
</tr>
</table>
</div><div id="tab3" style="display: none;">
<table ><!-- 排序的结果 -->
</table>
</div>
</body>
</html>
<html>
<head>
<script>
function sort(obj){
tab3.innerHTML="<table></table>";
var sortCell = tab2.childNodes[0].cells[obj.cellIndex];
//sort规则...
//排序后的sortCell
for(var i=0;i<sortCell.length){
tab3.childNodes[0].appendChild(tab2.childNodes[0].rows[sortCell[i].parentNode.rowIndex]);
}
tab2.innerHTML = tab3.innerHTML;
}
</script>
</head>
<body >
<table id="tab1">
<tr>
<td onclick="sort(this)">A</td><td onclick="sort(this)">B</td><td onclick="sort(this)">C</td>
</tr>
</table>
<div id="tab2">
<table>
<tr>
<td>dataA1</td><td>dataB1</td><td>dataC1</td>
</tr>
<tr>
<td>dataA2</td><td>dataB2</td><td>dataC2</td>
</tr>
<tr>
<td>dataA3</td><td>dataB3</td><td>dataC3</td>
</tr>
</table>
</div><div id="tab3" style="display: none;">
<table ><!-- 排序的结果 -->
</table>
</div>
</body>
</html>