<script language=javascript>
var X,Y;
function moveDiv(obj)  //实现层的拖移
{
  if(event.button==1)
  {
    var myX=obj.clientLeft;
    var myY=obj.clientTop;
    obj.style.pixelLeft=myX+(event.x-X);
    obj.style.pixelTop=myY+(event.y-Y);
  }
}
</script><div onmousedown="X=event.x-this.style.pixelLeft;Y=event.y-this.style.pixelTop;setCapture();"
onmouseup="releaseCapture();" onmousemove="moveDiv(this);"
style="position:absolute;width:200px;height:120px;
background-color:red;left:0px;top:0px;"></div>

解决方案 »

  1.   

    谢谢楼上的,能不能跟我说说我个涵数作什么用的setCapture(),好像是javascript内置的
      

  2.   

    设置属于当前文档的鼠标捕获对象。这是微软的解释,可能不大好理解。其实说白了就是:当某个元素使用了该方法后,那么鼠标事件就会始终在这个元素上响应,而无论鼠标在页面的什么位置,直至使用releaseCapture()方法解除。在上面的代码里的作用是:正常情况下,在拖移过程中,鼠标如果移动很快,就会滑出层的范围,那么onmousemove事件就不会在继续在层上响应了,那么也就不会继续跟着鼠标一起“走”了。把上面那段代码中的setCapture去掉,然后快速拖移,就知道它的作用了。