基本上已解决,就是按钮点击2次或2次以上就不对了,怀疑是传入的TABLE对象没有刷新好奇怪啊,贴代码:
<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript" type="text/javascript">
[].indexOf || (Array.prototype.indexOf = function(v){
    for(var i = this.length; i-- && this[i] !== v;);
    return i;
});
function resetTable(tbobj,str){
    arr = str.split(",");
    for(var i=0;i<arr.length;i++){
      var iMin = arr[i];
      var index = i;
      for(var j=i;j<arr.length;j++){
        if(iMin>arr[j]){
            iMin = arr[j];
            index = j;
        }
      }
      iMinch = arr.indexOf(iMin);
  iMaxch = arr.indexOf(arr[i]);
  alert(iMin + "|" + arr[i])
  if (iMinch != iMaxch) changeLie(tbobj,iMinch,iMaxch);
      arr.splice(index+1,0,arr[i]);
      arr.splice(index,1);
      arr.splice(i,1,iMin);
  alert(arr)
  }
}
function changeLie(tbobj,number1,number2){
   var temp =new Array(); 
   var arr=new Array();
   myTR=tbobj.rows;
   for(i=0;i<myTR.length;i++){
     arr[i]=new Array();
     temp[i]=new Array();
     myTD=myTR[i].cells;
     for(j=0;j<myTD.length;j++){
     temp[i][j] = myTR[i].cells[number2].innerHTML;
         myTR[i].cells[number2].innerHTML = myTR[i].cells[number1].innerHTML;
 myTR[i].cells[number1].innerHTML = temp[i][j];
     }
   }
}      
</script>
</head>
<body>
    <table border="1px" id="tblTest" onclick="resetTable(this,'5,8,7,2,3,6,1,4,0');">
        <TR>
    <TD>5</TD>
    <TD>8</TD>
    <TD>7</TD>
<TD>2</TD>
<TD>3</TD>
<TD>6</TD>
<TD>1</TD>
<TD>4</TD>
<TD>0</TD>
</TR>
<TR>
    <TD>张三</TD>
    <TD>天天小学</TD>
    <TD>二(1)班</TD>
<TD>9</TD>
<TD>男</TD>
<TD>上海</TD>
<TD>喜欢笑</TD>
<TD>35KG</TD>
<TD>团员</TD>
</TR>
<TR>
    <TD>李四</TD>
    <TD>天兆中学</TD>
    <TD>初一(2)班</TD>
<TD>14</TD>
<TD>女</TD>
<TD>上海</TD>
<TD>喜欢哭</TD>
<TD>50KG</TD>
<TD>党员</TD>
</TR>
    </table>
    <input type="button" value="change" onclick="resetTable(document.getElementById('tbltest'),'5,8,7,2,3,6,1,4,0');">
</body>
</html>

解决方案 »

  1.   

    第二个调用的时候,传入的参数str和画面中显示的内容已经不一致了。
    而排序是按照传入数组的内容进行的。
      

  2.   

    document.getElementById('tbltest')中的ID是tbltest。
    <table border="1px" id="tblTest" onclick="resetTable(this,'5,8,7,2,3,6,1,4,0');">
    中的id是tblTest。
    是你不小心写错了。哈哈。
    另外我建议用FIREFOX + FIREBUG调试JS。定位非常准确!jf
      

  3.   

    题目没看清。汗
    你把resetTable(document.getElementById('tbltest'),'5,8,7,2,3,6,1,4,0')这个函数写死,
    当你再点击按纽的时候,rows已经和'5,8,7,2,3,6,1,4,0'这个数组不对应,而是和'0,1,2,3,4,5,6,7,8'对应。
    你再认真看看代码吧。