如题。
现在有个需求需要实现这样的效果:
可以通过拖动A表中的行到B表实现把A表中的某行复制到B表,并且可以对B表中的行进行拖动排序。
即:
在A表的ID为1的行上按下鼠标左键,在拖动过程中被拖动的行的副本应随着鼠标移动,然后拖动到B表上访后松开鼠标左键,这时A表中ID为1的行就出现在了B表中,并且可以拖动B表中的ID为1或者5的行进行排序。
请问如何实现?

解决方案 »

  1.   

    网上这样的例子很多的。首要问题是拖动!以前见过很多贴子,模仿GOOGL的拖动效果。
      

  2.   

    表格行的 add del copy
    页面 dom对象的操作 建立 显示 移动 隐藏
    真对表格行的拖动事件的时机,模拟上面几个都能实现了 组合起来就是 表格拖动操作
      

  3.   

    同事已经解决:<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>拖拽表格的行</title>
    </head>
    <body>
    <table  border="1" style="background-color:#999999;" cellpadding="0px;" cellspacing="0px" id="dragBbb" onMouseDown="draginit(this)">
    <tr>
    <td width="73">序号</td>
    <td width="52">姓名</td>
    <td width="65">年龄</td>
    <td width="83">地址</td>
    </tr>
    <tr>
    <td width="73">1</td>
    <td width="52">张三</td>
    <td width="65">22</td>
    <td width="83">北京海淀</td>
    </tr>
    <tr>
    <td >2</td>
    <td>王五</td>
    <td>24</td>
    <td>上海浦东</td>
    </tr>
    <tr>
    <td>3</td>
    <td>朝气</td>
    <td>28</td>
    <td>广州深圳</td>
    </tr>
    <tr>
    <td>4</td>
    <td>反对</td>
    <td>27</td>
    <td>反对说</td>
    </tr>
    <tr>
    <td>5</td>
    <td>离开</td>
    <td>25</td>
    <td>热舞</td>
    </tr>
    </table>
    <br/>
    <br/>
    <table  border="1" style="background-color:#999999;" cellpadding="0px;" cellspacing="0px" id="dragAaa111" onMouseDown="draginit(this)">
    <tr>
    <td width="73">序号</td>
    <td width="52">姓名</td>
    <td width="65">年龄</td>
    <td width="83">地址</td>
    </tr>
    <tr>
    <td width="73">1</td>
    <td width="52">张三</td>
    <td width="65">22</td>
    <td width="83">北京海淀</td>
    </tr>
    <tr>
    <td >2</td>
    <td>王五</td>
    <td>24</td>
    <td>上海浦东</td>
    </tr>
    <tr>
    <td>3</td>
    <td>朝气</td>
    <td>28</td>
    <td>广州深圳</td>
    </tr>

    </table><STYLE type=text/css> 
    table{
    cursor:hand;

    </STYLE>
    <script language="javascript" >
    var obj;
    var xx=0,yy=0;
    var tagobj;
    var dragobj;
    var tableOb;

    function draginit(obj){
    var tblRows = document.getElementsByTagName("TR");               //获取所有的表格行
    tableOb=doClick(obj); //获取表格对象
    this.style

    for(var i=0;i<tblRows.length;i++){                                //遍历每一行
       if((tblRows[i].parentNode.parentNode.id).toString().indexOf("drag")!=-1){
    tblRows[i].onmousedown=mousedown;         //绑定所有的鼠标事件
    tblRows[i].ondragover=dragover;
    tblRows[i].ondragend=dragend;
    tblRows[i].ondrag=dragmove;
    tblRows[i].style.position="relative";
    tblRows[i].style.zIndex=1;
        }
    }
    }
    function mousedown(){                           //鼠标按下时的处理
    obj = event.srcElement; //获取点击对象
    if(obj.tagName=="TD") obj=obj.parentNode;           //如果是单元格
    if(obj.tagName!="TR") return false;                 //如果是单元行
    if(obj.rowIndex==0) return false;                   //如果是标题
    yy=event.clientY;                                   //鼠标的x坐标和y坐标
        xx=event.clientX;
    obj.style.zIndex=0;
    try{
       obj.dragDrop(); 
    }catch(e){
    }
    }
    function dragmove(){                //表格拖拽移动时的位置获取
    obj.style.top = event.clientY-yy;
        obj.style.left = event.clientX-xx;
    }
    function dragover(){                //鼠标拖动时的操作
    tagobj=event.srcElement;
    if(tagobj.tagName=="TD"){tagobj=tagobj.parentNode;}//如果是单元格
    if(tagobj.tagName!="TR")return false;              //如果是单元行
    }
    function dragend(){                                     //拖拽完毕后的处理-高度,宽度等
    obj.style.top=0;
    obj.style.left=0;
    obj.style.zIndex=1;
    if(tagobj!=null && tagobj.rowIndex!=0){
       var t1=tableOb.rows[obj.rowIndex];
       var t2=tableOb.rows[tagobj.rowIndex];
       
       
       tableOb.getElementsByTagName('tbody')[0].insertBefore(obj,tagobj);//实现表格单元行的互换
       tagobj.style.zIndex=1;
    }

    tagobj=null;
    }


    //以下是获取表格对象
    function   searchObjByTagName(obj,   tag)   
       {   
          while(obj!=null&&typeof(obj.tagName)!="undefind")   
          {   
              if(obj.tagName == tag.toUpperCase()) return(obj);   
              obj   =   obj.parentElement;   
          }   
          return   null;   
       }   
       function   doClick(curTd)   
       {       
              ClickedItemName   =   curTd.id;   
              var   table   =   searchObjByTagName(curTd,"TABLE");   
      return table;
       }


                              
    </script>
    </body>
    </html>