var array = new Array();
<!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> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>无标题文档 </title> 
<script language="javascript"> 
var cc = null; 
var sr; 
function jos(ss) 

    mm = ss; 
    var array = new Array();
    var i,j;
    var trs = ss.childNodes[0].childNodes;
    var list_items = function(o)
    { 
       items = o; 
       items.onmouseup=function() 
       { 
            if(cc && this != cc)
            {
                 cc.innerHTML = this.innerHTML; 
                 alert(cc.innerHTML); 
                 this.innerHTML = sr; 
            }
            cc = null;
        }
        items.onmousedown=function() 
        {
            cc = this; 
            sr = this.innerHTML;
        }
    }
    var k = 0; 
    for(i=0;i <trs.length;i++) 
    {  
        for(j=0;j<trs[i].childNodes.length;j++) 
        {
            array[k] = trs[i].childNodes[j].innerHTML; 
            k++;
        }
     }
     ss.removeChild(ss.childNodes[0]); 
/////将所有节点全部复制保存在数组里 
/////这里将使用数学方法 
     var tbody = document.createElement("tbody"); 
     var line;
     for(i=0;i<k;i++)
     {
         if(i%3==0 && i != k-1) 
         {
             line = document.createElement("tr"); 
             tbody.appendChild(line); 
         }
         var it = document.createElement("td"); 
         it.innerHTML = array[i]; 
         line.appendChild(it); 
         list_items(it); 
      }
      ss.appendChild(tbody); 

</script> 
</head> 
<body> 
<table width="500" border="1" align="center" onmouseover="jos(this)"> 
   <tr> 
     <td>mm1 </td> 
     <td>mm2 </td> 
     <td>mm3 </td> 
   </tr> 
   <tr> 
     <td>mm4 </td> 
     <td>mm5 </td> 
     <td>mm6 </td> 
   </tr> 
</table> 
</body> 
</html> 

解决方案 »

  1.   

    var array = new Array(); 少了()呀
      

  2.   


    <!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> 
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
    <title>无标题文档 </title> 
    <script language="javascript"> 
    var cc = null; 
    var sr;
    var n=-1,m=-1;
    function jos(ss) 

        mm = ss; 
        var array = new Array();
        var i,j;
        var trs = ss.childNodes[0].childNodes;
        var list_items = function(o)
        { 
           items = o; 
           items.onmouseup=function() 
           { 
                if(cc && this != cc)
                {
                 var tb = this.parentNode.parentNode.parentNode;
                 tb.rows[m].cells[n].innerHTML = this.innerHTML;
                     cc.innerHTML = this.innerHTML;
                     alert(cc.innerHTML);
                     this.innerHTML = sr;
                }
                cc = null;
                m = n = -1
            }
            items.onmousedown=function() 
            {
                cc = this;
                m  = this.parentNode.rowIndex;
                n  = this.cellIndex;
                sr = this.innerHTML;
            }
        }    var k = 0; 
        for(i=0;i <trs.length;i++) 
        {  
            for(j=0;j<trs[i].childNodes.length;j++) 
            {
                array[k] = trs[i].childNodes[j].innerHTML; 
                k++;
            }
         }
         ss.removeChild(ss.childNodes[0]); 
    /////将所有节点全部复制保存在数组里 
    /////这里将使用数学方法 
         var tbody = document.createElement("tbody"); 
         var line;
         for(i=0;i<k;i++)
         {
             if(i%3==0 && i != k-1) 
             {
                 line = document.createElement("tr"); 
                 tbody.appendChild(line); 
             }
             var it = document.createElement("td"); 
             it.innerHTML = array[i]; 
             line.appendChild(it); 
             list_items(it); 
          }
          ss.appendChild(tbody); 
    }</script> 
    </head> 
    <body> 
    <table width="500" border="1" align="center" onmouseover="jos(this)"> 
       <tr> 
         <td>mm1 </td> 
         <td>mm2 </td> 
         <td>mm3 </td> 
       </tr> 
       <tr> 
         <td>mm4 </td> 
         <td>mm5 </td> 
         <td>mm6 </td> 
       </tr> 
    </table> 
    </body> 
    </html> 
     
      

  3.   

    <!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>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>右键拖动交换</title>
    <script language="javascript">
    var oSrcNode=null;function MouseDown(e){
    var evt=e||event;
    var srcEl=evt.target||evt.srcElement;
    if(srcEl && srcEl.tagName=="TD"){
    oSrcNode=srcEl;
    }
    }function MouseUp(e){
    var evt=e||event;
    var srcEl=evt.target||evt.srcElement;
    if(srcEl && oSrcNode  && srcEl.tagName=="TD" && srcEl!=oSrcNode){
    //交换内容
    var strTemp=oSrcNode.innerHTML;
    oSrcNode.innerHTML=srcEl.innerHTML;
    srcEl.innerHTML=strTemp;
    }

    //注销选定对象和事件
    oSrcNode=null;
    window.onmousedown=null;
    }
    document.oncontextmenu=function(){
    window.onmousedown=MouseDown;
    return false;
    }; window.onmouseup=MouseUp;</script>
    </head>
    <body>
    <table width="500" border="1" align="center">
       <tr>
         <td>mm1 </td>
         <td>mm2 </td>
         <td>mm3 </td>
       </tr>
       <tr>
         <td>mm4 </td>
         <td>mm5 </td>
         <td>mm6 </td>
       </tr>
    </table>
    </body>
    </html>
      

  4.   

    真丢人上面哪个在ie下有问题,光在ff下调试了,忘了在ie下调试<!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>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>右键拖动交换</title>
    <style type="text/css"></style>
    <script language="javascript">
    var oSrcNode=null;function MouseDown(e){
    var evt=e||event;
    var srcEl=evt.target||evt.srcElement;

    if(evt.button==2 && srcEl && srcEl.tagName=="TD"){
    oSrcNode=srcEl;
    }
    }function MouseUp(e){
    var evt=e||event;
    var srcEl=evt.target||evt.srcElement;
    if(oSrcNode &&  srcEl  && srcEl.tagName=="TD" && srcEl!=oSrcNode){
    //交换内容
    var strTemp=oSrcNode.innerHTML;
    oSrcNode.innerHTML=srcEl.innerHTML;
    srcEl.innerHTML=strTemp;
    }

    //注销选定对象和事件
    oSrcNode=null;
    }document.oncontextmenu=function(){return false;};
    document.onmousedown=MouseDown;
    document.onmouseup=MouseUp;</script>
    </head>
    <body>
    <table width="500" border="1" align="center">
       <tr>
         <td>mm1 </td>
         <td>mm2 </td>
         <td>mm3 </td>
       </tr>
       <tr>
         <td>mm4 </td>
         <td>mm5 </td>
         <td>mm6 </td>
       </tr>
    </table>
    </body>
    </html>
      

  5.   

    感谢楼上各位的回答,但我的那个程序的对象变量好象就不能用了,但是alert(cc) 显示 [object]
    alert(cc.innerHTML)  也显示正常  这是怎么回事,先还是希望有高人指点,本帖再加点分吧
      

  6.   

    问题在于onmouseover放在了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> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
    <title>无标题文档 </title>
     <script language="javascript">
     var cc = null; 
     var sr; 
     function jos(ss) 
     { mm = ss; 
     
     var array = new Array(); 
     var i,j; 
     var trs = ss.childNodes[0].childNodes; 
     //alert(ss.childNodes[0])
     var list_items = function(o) 
     { items = o; items.onmouseup=function() 
     { if(cc && this != cc) 
     { 
       cc.innerHTML = this.innerHTML;
       this.innerHTML = sr; } 
       cc = null; 
      } 
     items.onmousedown=function() { cc = this; sr = this.innerHTML;} } 
     var k = 0; 
     for(i=0;i <trs.length;i++) 
     { for(j=0;j<trs[i].childNodes.length;j++) 
     { array[k] = trs[i].childNodes[j].innerHTML; k++; } } 
     //alert(ss.childNodes[0].nodeName)
     ss.removeChild(ss.childNodes[0]); 
     /////将所有节点全部复制保存在数组里 /////这里将使用数学方法  
     var tbody = document.createElement("tbody"); 
     var line; for(i=0;i<k;i++) { if(i%3==0 && i != k-1) 
     { line = document.createElement("tr"); tbody.appendChild(line); } 
     var it = document.createElement("td"); 
     it.innerHTML = array[i];
     line.appendChild(it); 
     
     list_items(it); } ss.appendChild(tbody); } 
     </script> 
     </head> 
     <body onload="jos(document.getElementById('test'))">//-----------------------
     <table id="test" width="500" border="1" align="center" > 
     <tr> <td>mm1 </td> <td>mm2 </td> <td>mm3 </td> </tr> 
     <tr> <td>mm4 </td> <td>mm5 </td> <td>mm6 </td> </tr> 
     </table> 
     </body> 
     </html> 
    这样就ok了
      

  7.   

    <html>
    <head>
    <title>
    </title>
    </head>
    <body>
    <table width="500" border="1" align="center" id="tblContainer" onmouseup="Rest(event)">
       <tr>
         <td>mm1 </td>
         <td>mm2 </td>
         <td>mm3 </td>
       </tr>
       <tr>
         <td>mm4 </td>
         <td>mm5 </td>
         <td>mm6 </td>
       </tr>
    </table>
    <input id="button" type="button" onclick="Reset()" value="还原" />
    <script>var DragObject = null;
    var ExchangeObject = null;
    var tblContainer = document.getElementById("tblContainer");
    var data = new Array(); //保存原数据
    for(var i=0;i<tblContainer.rows.length;i++)
    {
    data[i] = new Array();
    for(var j = 0; j< tblContainer.rows[i].cells.length; j++)
    {
    data[i][j] = tblContainer.rows[i].cells[j].innerHTML;
    tblContainer.rows[i].cells[j].onmousedown = function()
    {
    DragObject = this; 
    }
    }
    }
    function Rest(ev)
    {
    if(DragObject == null)
    return; ev = ev || window.event;
    var target = ev.target || ev.srcElement;
    if(target)
    ExchangeObject = target;
    if(DragObject == ExchangeObject)
    return;
    else
    {
    temp = DragObject.innerHTML;
    DragObject.innerHTML = ExchangeObject.innerHTML;
    ExchangeObject.innerHTML = temp; }
    DragObject = null;
    ExchangeObject = null;

    }
    function Reset()
    {
    for(var i=0;i<tblContainer.rows.length;i++)
    {
    for(var j = 0; j< tblContainer.rows[i].cells.length; j++)
    {
    tblContainer.rows[i].cells[j].innerHTML = data[i][j];
    }
    }
    }
    </script>
    </body>
    </html>
      

  8.   

     sr = this.innerHTML;  因为这只是string的复制啊
    第二个td内值的改变不能影响第一个td内的值,因为第一个td丢失了引用,只是复制了他的值
      

  9.   

    终于搞清楚了  就是那个onmouseover 的问题,谢谢了