<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>交换行(支持键盘)</TITLE></HEAD><BODY onkeydown = "javascript:return refresh();"> <style> .tr{background-color:blue} </style>
<div id=info> </div><center><script type="text/javascript"> var o1,o2;//全局记录选中的行,和要交换的行的对象 var o1a=new Array();//保存选中的行 var o2a=new Array();//保存要交换的行 var num=0;//选中的单元格所在行的索引 var numed=0;//要交换的行的索引
//同SetRow(dir),支持键盘上下移动 function refresh() { var o; //选中的单元格 var start=false;//记录是否选中某行 //判断是否选中某行,并记录该行信息 for(var j=0;j<document.forms[0].listTd.length;j++){ if(document.forms[0].listTd[j].checked) { o=document.forms[0].listTd[j];//设置o start=true;//设置start num=document.forms[0].listTd[j].parentNode.parentNode.rowIndex;//设置num } } //得到行的集合,根据表的名称"listTable" var trs = document.getElementById("listTable").getElementsByTagName("tr"); o1=trs[num]; //设置选中的行对象 //得到每一行有多少列,cells是某行列对象的集合 var tdLen=trs[num].cells.length; o1a.length=tdLen; o2a.length=tdLen; for(var i=0;i<tdLen;i++){ o1a[i]=trs[num].cells[i].innerHTML; switch (window.event.keyCode) { case 38://上 numed=num-1; o2a[i]=trs[numed].cells[i].innerHTML; o2=trs[numed];//设置要交换的行对象 break; case 40://下 numed=num+1; o2a[i]=trs[numed].cells[i].innerHTML; o2=trs[numed];//设置要交换的行对象 break; default: break; } } switchTd(o1,o2,num); }
//交换两行 function switchTd(tr1,tr2,n){ for(x=0;x<o1a.length;x++){ tr1.cells[x].innerHTML=o2a[x]; tr1.cells[0].innerHTML=o1a[0]; tr2.cells[x].innerHTML=o1a[x]; tr2.cells[0].innerHTML=o2a[0]; tr1.cells[2].childNodes[0].name="p"+o1a[0]; tr2.cells[2].childNodes[0].name="p"+o2a[0]; } tr2.className="tr"; tr1.className=""; document.getElementById("info").innerHTML= " 当前位置: "+tr1.cells[2].childNodes[0].name+" 被替换的是: "+tr1.cells[2].childNodes[0].value+" <br> 当前位置: "+tr2.cells[2].childNodes[0].name+" 您选择的是: "+tr2.cells[2].childNodes[0].value; }
//设置选中的行,和被交换的行到数组中 function SetRow(dir){ var o; var start=false; for(var j=0;j<document.forms[0].listTd.length;j++){ if(document.forms[0].listTd[j].checked) { o=document.forms[0].listTd[j]; start=true; num=document.forms[0].listTd[j].parentNode.parentNode.rowIndex; } } var trs = document.getElementById("listTable").getElementsByTagName("tr"); o1=trs[num]; var tdLen=trs[num].cells.length; o1a.length=tdLen; o2a.length=tdLen; for(var i=0;i<tdLen;i++){ o1a[i]=trs[num].cells[i].innerHTML; if(dir=="down"){ numed = num+1; o2a[i]=trs[numed].cells[i].innerHTML; } else{ numed = num-1; o2a[i]=trs[numed].cells[i].innerHTML; } } if(dir=="down"){ numed = num+1; o2=trs[numed]; }else{ numed = num-1; o2=trs[numed]; } switchTd(o1,o2,num); }
</script> <form action=""> <table width="" border="0" cellspacing="0" cellpadding="0"> <tr> <td > <table width="100%" border="0" cellspacing="1" cellpadding="0" id="listTable" bgcolor="#D57501"> <tr align="center" bgcolor="#FFFFFF"> <td height="24">排名</td> <td width=100>选择</td> <td>您认为金牌总数的排名将是?</td> </tr> <tr align="center" bgcolor="#FFFFFF" id="1"> <td>1</td> <td><input name="listTd" type="radio" value="radiobutton" id="radio1"></td> <td><input name="p1" type="hidden" value="中国"> 中国</td> </tr> <tr align="center" bgcolor="#FFFFFF"> <td>2</td> <td><input name="listTd" type="radio" value="radiobutton" id="radio2"></td> <td><input type="hidden" name="p2" value="美国"> 美国</td> </tr> <tr align="center" bgcolor="#FFFFFF" id="3"> <td>3</td> <td><input name="listTd" type="radio" value="radiobutton" id="radio3"></td> <td><input type="hidden" name="p3" value="俄罗斯"> 俄罗斯</td> </tr> <tr align="center" bgcolor="#FFFFFF"> <td>4</td> <td><input name="listTd" type="radio" value="radiobutton" id="radio4"></td> <td><input type="hidden" name="p4" value="法 国"> 法 国</td> </tr> <tr align="center" bgcolor="#FFFFFF"> <td>5</td> <td><input name="listTd" type="radio" value="radiobutton" id="radio5"></td> <td><input type="hidden" name="p5" value="德 国"> 德 国</td> </tr> <tr align="center" bgcolor="#FFFFFF"> <td>6</td> <td><input name="listTd" type="radio" value="radiobutton" id="radio6"></td> <td><input type="hidden" name="p6" value="英 国"> 英 国</td> </tr> <tr align="center" bgcolor="#FFFFFF"> <td>7</td> <td><input name="listTd" type="radio" value="radiobutton" id="radio7"></td> <td><input type="hidden" name="p7" value="日 本"> 日 本</td> </tr> <tr align="center" bgcolor="#FFFFFF"> <td>8</td> <td><input name="listTd" type="radio" value="radiobutton" id="radio8"></td> <td><input type="hidden" name="p8" value="韩 国"> 韩 国</td> </tr> </table> </td> <td width="322" valign="top"><a href="javascript:SetRow('up');" class="btlink2" οnclick="">↑向上移动</a><div style="margin-top:10px"><a href="javascript:SetRow('down');" class="btlink" οnclick="">↓向下移动</a></div></td> </tr> </table>
</form></BODY></HTML>