各位兄弟,我onmousedown的时候取得一个对象,然后移动对象div,移到指定的对象上面,做onmouseup动作,放在移到的指定对象上面不动   
  onmousedown的时候肯定可以获得对象,可是当onmouseup的时候,我怎么获得当前鼠标下对应的对象。   
  我现在能做到移动时不拖动down时获得的对象,那么up时就能得到当前鼠标下的对象   
  可是移动时拖动对象,那么就无法取得任何对象了。因为鼠标下的对象是移动的那个对象,怎么能透过移动的div,获得鼠标当前对象   
  请大家帮帮忙   

解决方案 »

  1.   

    告诉你。是得不到的。如果你要做 igoogle 的那种拖拽,不是这样的方式。他的办法是:首先算出 所有可选目标距离页面的Left 和 Top 。在igoogle里就是所有组件Box 的 距离页面的Left 和Top 。放到数组A中去。当 mousemove 的时候,用当前 鼠标的 X 和 Y 去逐个对比 数组A中的 Left 和Top ,看谁离得最近,那么就找到了 目标Box 。
      

  2.   

    我现在要做的效果是在线excel取的就是选中单元格的对象,如果去对比每个单元格的top和left的话,单元格多了效率就有问题了,我是这么想的mousedown的时候记录下一个单元格然后在mouseup的时候记录下一个单元格,然后再得出他们之间的选中单元格,,这样的话就不用去对比每一个单元格的top和left了,,但是现在我在拖动选取单元格的时候是用一个层来显示出选择框的效果的所以在mouseup的时候就取不到up时的那个单元格对象。我在这里也想请教一下,,或者这个选取单元格的方式或算法还有其它好的方式。
      

  3.   

    忘记说了,,是在网页上面table来模拟这个excel的实现
      

  4.   

    看看这个,是移动表行.与你说的有些相似.
    <HTML><HEAD>
    <BODY>表格中拖动单元格改变顺序 Gu Laicheng 2009-02-04 22:54
    <SCRIPT language=javascript>
    var beginMoving=false;
    function MDTM(obj){
    obj.style.zIndex=1;
    obj.mouseDownY=event.clientY;
    obj.mouseDownX=event.clientX;
    beginMoving=true;
    obj.setCapture();
    }function MMTM(obj){
        if(!beginMoving) return false;
    obj.style.top = (event.clientY-obj.mouseDownY);
    obj.style.left = (event.clientX-obj.mouseDownX);
    }
    function MUTM(obj){
    if(!beginMoving) return false;
    obj.releaseCapture();
    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;
    obj.parentElement.moveRow(obj.rowIndex,tempRowIndex);
    }</SCRIPT>
     
    <TABLE width=300 border=1>
      <TBODY>
      <TR onmouseup=MUTM(this); onmousemove=MMTM(this) 
      onmousedown=MDTM(this) style="POSITION: relative; HEIGHT: 25px" 
      bgColor=#ffffff>
        <TD bgColor=blue>0</TD>
        <TD>0</TD>
        <TD>0</TD></TR>
      <TR onmouseup=MUTM(this); onmousemove=MMTM(this) 
      onmousedown=MDTM(this) style="POSITION: relative; HEIGHT: 25px" 
      bgColor=#ffffff>
        <TD bgColor=black>1</TD>
        <TD>1</TD>
        <TD>1</TD></TR>
      <TR onmouseup=MUTM(this); onmousemove=MMTM(this) 
      onmousedown=MDTM(this) style="POSITION: relative; HEIGHT: 25px" 
      bgColor=#ffffff>
        <TD bgColor=red>2</TD>
        <TD>2</TD>
        <TD>2</TD></TR>
      <TR onmouseup=MUTM(this); onmousemove=MMTM(this) 
      onmousedown=MDTM(this) style="POSITION: relative; HEIGHT: 25px" 
      bgColor=#ffffff>
        <TD>3</TD>
        <TD>3</TD>
        <TD>3</TD></TR>
      <TR onmouseup=MUTM(this); onmousemove=MMTM(this) 
      onmousedown=MDTM(this) style="POSITION: relative; HEIGHT: 25px" 
      bgColor=#ffffff>
        <TD>4</TD>
        <TD>4</TD>
        <TD>4</TD></TR>
      <TR onmouseup=MUTM(this); onmousemove=MMTM(this) 
      onmousedown=MDTM(this) style="POSITION: relative; HEIGHT: 25px" 
      bgColor=#ffffff>
        <TD>5</TD>
        <TD>5</TD>
        <TD>5</TD></TR>
      <TR onmouseup=MUTM(this); onmousemove=MMTM(this) 
      onmousedown=MDTM(this) style="POSITION: relative; HEIGHT: 25px" 
      bgColor=#ffffff>
        <TD>6</TD>
        <TD>6</TD>
        <TD>6</TD></TR>
      <TR onmouseup=MUTM(this); onmousemove=MMTM(this) 
      onmousedown=MDTM(this) style="POSITION: relative; HEIGHT: 25px" 
      bgColor=#ffffff>
        <TD>7</TD>
        <TD>7</TD>
        <TD>7</TD></TR></TBODY></TABLE>
    </BODY></HTML>
      

  5.   

    我觉得用onmouseover差不多能得到 不过不建议这么用 因为谁知道中途会放到什么地方呢如果说您鼠标落下的DIV的的个数或者位置是固定的 那好办了 直接在你移动普通DIV的onmouseup方法里加上判断left和top的方法 如果说符合你将要落到的那个DIV的位置那么就直接appendChild 否则继续做别的
      

  6.   

    是的,,这样是获不到的,,没办法我把中间显示画框效果的div去掉了,,就可以了,,但是我想问一下子显示选取矩形的效果是改变td中的border颜色呢还是用画线的方式来做好一点呢