gg.parentNode.style.left = (e.clientX-tempx)+"px"
                  gg.parentNode.style.top = (e.clientY-tempy)+"px"晕,你这2个!!!
你自己测试就知道了一减看看是不是0,刚开始

解决方案 »

  1.   

    offsetLeft
    是获取它与他的父节点之间的x..
    要获取它与window之间的x还的写函数..
    function offsety(s){
    nu=s.offsetLeft
    while(s.parentNode){
    s=s.parentNode
    if(!isNaN(s.offsetLeft))
    {nu+=s.offsetLeft}
    }
    return nu
    }
    function offsetx(s){
    nu=s.offsetTop
    while(s.parentNode){
    s=s.parentNode
    if(!isNaN(s.offsetTop))
    {nu+=s.offsetTop}
    }
    return nu
    }
    在你代码里调用
             var   tempx = e.clientX - offsetx(gg)
             var   tempy = e.clientY - offsety(gg)
      

  2.   

    <body>
    <div  style=" width:200px; height:190px;  position:absolute;border:1px solid #666666">
    <div id="gg" style=" width:200px; height:40px; background:#FFFF99; "></div>
    <div style=" width:200px; height:150px;"></div>
    </div>
    </body>
    <script>
    var gg = document.getElementById("gg")gg.onmouseover = function(){   document.onmousedown =function(e)
          {
             e = e||event
             var   tempx = e.clientX - gg.parentNode.offsetLeft
             var   tempy = e.clientY - gg.parentNode.offsetTop
            document.onmousemove = function(e)
                {
                       e = e||event
                      gg.parentNode.style.left = (e.clientX-tempx)+"px"
                      gg.parentNode.style.top = (e.clientY-tempy)+"px"            }
                
            document.onmouseup = function ()
              {
                 document.onmousemove = null;
                 document.onmouseup = null;
              }
            
    }
    }
    </script>