你的好复杂哦```有那麻烦吗
///////////////
<script>
var offy;
var offx;
//offy,offx保存了鼠标按下的位置在被拖曳物体内的相对坐标function drag() {
alll.style.position = "absolute";
alll.style.top=event.clientY+document.body.scrollTop-offy; 
alll.style.left=event.clientX+document.body.scrollLeft-offx;
return true; 
}// 鼠标跟随用的函数function start_drag() { 
offy=event.offsetY; 
offx=event.offsetX; 
document.onmousemove=drag; 
}//开始拖曳(使鼠标跟随有效)function stop_drag() { 
alll.style.position = "absolute";
document.onmousemove=null; 
}//停止拖曳(使鼠标跟随失效)
</script><div id=alll style="height:200;background:#345;width=200" onmousedown="start_drag()" onmouseup="stop_drag()" onmouseout="stop_drag()">有那样麻烦吗</div> 

解决方案 »

  1.   

    <script language="JavaScript">
    var x,yvar z,down=false;function init(e){ 
    e.setCapture();            //设置属于当前对象的鼠标捕捉 
    z=e.style.zIndex;          //获取对象的z轴坐标值 
    //设置对象的z轴坐标值为10000,确保当前层显示在最前面 
    e.style.zIndex=10000; 
    x=event.clientX;   //获取鼠标指针位置相对于触发事件的对象的X坐标 
    y=event.clientY;   //获取鼠标指针位置相对于触发事件的对象的Y坐标 
    down=true; 
    left1=e.style.posLeft  
    top1=e.style.posTop 

        //布尔值,判断鼠标是否已按下,true为按下,false为未按下 
    } function moveit(e){ 
    //判断鼠标已被按下且onmouseover和onmousedown事件发生在同一对象上 
    //if(down&&event.srcElement==obj){ 
    if(down){
       with(e.style){ 
            posLeft=parseInt(left1)+event.clientX-x
            posTop=parseInt(top1)+event.clientY-y;   } 

    } function stopdrag(e){ 
    //onmouseup事件触发时说明鼠标已经松开,所以设置down变量值为false e.style.zIndex=z;       //还原对象的Z轴坐标值 
    e.releaseCapture(); //释放当前对象的鼠标捕捉 
    down=false;
    }
    </script>
    你没有记录该曾初始的的值,红色标记出来了
      

  2.   

    谢谢两位.节日出去玩了,没有及时回复.
    zhu18的方法虽然没有问题,但是因为使用的项目的原因,document.onmousemove是不起作用的,所以你的方法不适合.另外还有个小问题,为什么我没有设置初始值拖动跟设置初始值拖动效果是一样的呢?