你的取消是基于上次的排序结果还是就是从1--》8这样排?? <html> <head> <title>表格排序 </title> <script language="javascript"> <!-- function $(Id){return document.getElementById(Id);} var beginMoving = false; var tbid=new Array();//存储从cookie中获取的id集合的,如果取消是基于上次的则使用此集合来排序 window.onload=function(){ var str=document.cookie; var m=/tbId=([^;]+)/i.exec(str); if(m)tbid=eval(m[1]);//从cookie中获取原来保存的id集合 else for(var i=0;i<8;i++)tbid[i]=i+1;//如果没有cookie则默认是1--》8排序
cancel()//调用还原函数初始化上次保存的集合序列对象 } function MouseDownToMove (obj) { obj.style.zIndex = 1; obj.mouseDownY = event.clientY; obj.mouseDownX = event.clientX; beginMoving = true; obj.setCapture (); } function MouseMoveToMove (obj) { if(!beginMoving) return false; for (i = 0; i < obj.cells.length; i ++) obj.cells [i].style.filter = "alpha(opacity = 70)"; obj.style.top = (event.clientY - obj.mouseDownY); obj.style.left = (event.clientX - obj.mouseDownX); } function MouseUpToMove (obj) { if (!beginMoving) return false; obj.releaseCapture ();//见 obj.setCapture (); obj.style.top = 0; obj.style.left = 0; obj.style.zIndex = 0; beginMoving = false; var tempTop = event.clientY - obj.mouseDownY; var tempRowIndex = (tempTop - tempTop % 25) / 25; if (tempRowIndex + obj.rowIndex < 0 ) tempRowIndex = 1; else tempRowIndex = tempRowIndex+obj.rowIndex; if (tempRowIndex >= obj.parentElement.rows.length - 1) tempRowIndex = obj.parentElement.rows.length - 1; for (i = 0; i < obj.cells.length; i ++) obj.cells [i].style.filter = "alpha(opacity = 100)";
if ( tempRowIndex == 0 ) //如果移动目标是表头,则返回,不移动 return false; obj.parentElement.moveRow(obj.rowIndex, tempRowIndex); } function FunTest () { for (i = 1; i <= 8; i ++) { alert ("TrID"+i+":"+document.getElementById ("TrID" + (i)).rowIndex); } } function setCookie() { var tr,tb=$('mytable'); var len=tb.rows.length; var data="["; for(var i=1;i<len;i++)data+=tb.rows[i].id.substring(4)+","; data=data.substring(0,data.length-1); data+="]"; var d=new Date(); d.setMonth(d.getMonth()+1);//有效期1个月 document.cookie="tbId="+data+";expires="+d.toGMTString(); alert('保存成功'); } function checkCookie() { } //这里的取消是基于上次排序的 function cancel() {
<html>
<head>
<title>表格排序 </title> <script language="javascript">
<!--
function $(Id){return document.getElementById(Id);}
var beginMoving = false; var tbid=new Array();//存储从cookie中获取的id集合的,如果取消是基于上次的则使用此集合来排序
window.onload=function(){
var str=document.cookie;
var m=/tbId=([^;]+)/i.exec(str);
if(m)tbid=eval(m[1]);//从cookie中获取原来保存的id集合
else for(var i=0;i<8;i++)tbid[i]=i+1;//如果没有cookie则默认是1--》8排序
cancel()//调用还原函数初始化上次保存的集合序列对象
}
function MouseDownToMove (obj)
{
obj.style.zIndex = 1;
obj.mouseDownY = event.clientY;
obj.mouseDownX = event.clientX;
beginMoving = true;
obj.setCapture ();
} function MouseMoveToMove (obj)
{
if(!beginMoving) return false; for (i = 0; i < obj.cells.length; i ++)
obj.cells [i].style.filter = "alpha(opacity = 70)";
obj.style.top = (event.clientY - obj.mouseDownY);
obj.style.left = (event.clientX - obj.mouseDownX); } function MouseUpToMove (obj)
{
if (!beginMoving) return false;
obj.releaseCapture ();//见 obj.setCapture ();
obj.style.top = 0;
obj.style.left = 0;
obj.style.zIndex = 0;
beginMoving = false; var tempTop = event.clientY - obj.mouseDownY;
var tempRowIndex = (tempTop - tempTop % 25) / 25;
if (tempRowIndex + obj.rowIndex < 0 )
tempRowIndex = 1;
else
tempRowIndex = tempRowIndex+obj.rowIndex; if (tempRowIndex >= obj.parentElement.rows.length - 1)
tempRowIndex = obj.parentElement.rows.length - 1; for (i = 0; i < obj.cells.length; i ++)
obj.cells [i].style.filter = "alpha(opacity = 100)";
if ( tempRowIndex == 0 ) //如果移动目标是表头,则返回,不移动
return false;
obj.parentElement.moveRow(obj.rowIndex, tempRowIndex);
}
function FunTest ()
{
for (i = 1; i <= 8; i ++)
{
alert ("TrID"+i+":"+document.getElementById ("TrID" + (i)).rowIndex);
}
}
function setCookie()
{
var tr,tb=$('mytable');
var len=tb.rows.length;
var data="[";
for(var i=1;i<len;i++)data+=tb.rows[i].id.substring(4)+",";
data=data.substring(0,data.length-1);
data+="]";
var d=new Date();
d.setMonth(d.getMonth()+1);//有效期1个月
document.cookie="tbId="+data+";expires="+d.toGMTString();
alert('保存成功');
} function checkCookie()
{
}
//这里的取消是基于上次排序的
function cancel()
{
var tr,tbody=$('mytable').firstChild;
for(var i=0;i<tbid.length;i++){
tr=$("TrID"+tbid[i]);
tr=tbody.removeChild(tr);
tbody.appendChild(tr);
}
}
//-->
</script>
</head>
<body>
<center>用鼠标移动TR </center> <br>
<center>
<table class="sortable" id="mytable" width="300" border="1" cellpadding="0" cellspacing="0" >
<tr style='height:25;position:static;'>
<th scope="col">name </th>
<th scope="col">age </th>
<th scope="col">sex </th>
</tr>
<tr id="TrID1" style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'>
<td bgcolor="#ffffff">1 </td>
<td bgcolor="#ffffff">1 </td>
<td bgcolor="#ffffff">1 </td>
</tr>
<tr id="TrID2" style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'>
<td bgcolor="#ffffff">2 </td>
<td bgcolor="#ffffff">2 </td>
<td bgcolor="#ffffff">2 </td>
</tr>
<tr id="TrID3" style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'>
<td bgcolor="#ffffff">3 </td>
<td bgcolor="#ffffff">3 </td>
<td bgcolor="#ffffff">3 </td>
</tr>
<tr id="TrID4" style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'>
<td bgcolor="#ffffff">4 </td>
<td bgcolor="#ffffff">4 </td>
<td bgcolor="#ffffff">4 </td>
</tr>
<tr id="TrID5" style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'>
<td bgcolor="#ffffff">5 </td>
<td bgcolor="#ffffff">5 </td>
<td bgcolor="#ffffff">5 </td>
</tr>
<tr id="TrID6" style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'>
<td bgcolor="#ffffff">6 </td>
<td bgcolor="#ffffff">6 </td>
<td bgcolor="#ffffff">6 </td>
</tr>
<tr id="TrID7" style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'>
<td bgcolor="#ffffff">7 </td>
<td bgcolor="#ffffff">7 </td>
<td bgcolor="#ffffff">7 </td>
</tr>
<tr id="TrID8" style='height:25;position:relative;' onmousedown='MouseDownToMove(this)' onmousemove='MouseMoveToMove(this)' onmouseup='MouseUpToMove(this);'>
<td bgcolor="#ffffff">8 </td>
<td bgcolor="#ffffff">8 </td>
<td bgcolor="#ffffff">8 </td>
</tr>
</table>
<table width="300" border="1" cellpadding="0" cellspacing="0">
<tr>
<td colspan="3" align="center">
<input type="button" name="BtnTest1" value=" 测试 " onClick="FunTest()">
</td>
<td colspan="3" align="center">
<input type="button" name="BtnTest2" value=" 保存 " onClick='setCookie()'>
</td>
<td colspan="3" align="center">
<input type="button" name="BtnTest3" value=" 排序 " onClick='checkCookie()'>
</td>
<td colspan="3" align="center">
<input type="reset" name="BtnTest4" value=" 取消 " onClick='cancel()'>
</td>
</tr>
</table>
</center>
</body>
</html>