<html>
<head>
<script language="javascript">
       var currentMoveObj = null;
var relLeft = null;
var relTop = null;
function f_mdown(obj)
{
currentMoveObj=obj;
//setCapture()可以让对象捕捉到鼠标事件,跟随着鼠标做出响应
currentMoveObj.setCapture();

//alert(event.x);
//alert(currentMoveObj.style.pixelLeft);
//alert(event.x);
//alert(currentMoveObj.style.pixelLeft);
relLeft=event.x-currentMoveObj.style.pixelLeft;
relTop=event.y-currentMoveObj.style.pixelTop;

}
                  //问题主要在这里:当我鼠标不点击table表单的时候,点击其他空白处会出现
                  //currentMoveObj对象为null,这个是因为我没有获取currentMoveObj对象。
                  //怎样才能让我点击其他地方不会出现这种获取为空的现象。
                  //如果是window的话  拖动table表单的时候释放鼠标事件就没用了
                  //给个好的方法解决
document.attachEvent('onmouseup',function(){
currentMoveObj.releaseCapture();
currentMoveObj=null;
}); function f_move(obj)
{
if(currentMoveObj!=null)
{
currentMoveObj.style.pixelLeft=event.x-relLeft;
currentMoveObj.style.pixelTop=event.y-relTop;
} } </script>
</head>
<body>
<table id="test1" border="1" width="100" bgcolor="#FF0099" style="position:absolute;left:80;top:40;" 
         onmousedown="f_mdown(this)" onmousemove="f_move(this)">
<tr bgcolor="#330099">
<td align="center" style="cursor:move">table</td>
</tr>
<tr>
<td align="center">content</td>
</tr>
</table>
<table border=1 width="200"  style="position:absolute;left:130;top:170;">
<tr bgcolor="#00CCFF">
<td align="center">table</td>
</tr>
<tr bgcolor="#990033">
<td align="center">content</td>
</tr>
</table>
</body>
<html>

解决方案 »

  1.   

    那加一个判断就行啊document.attachEvent('onmouseup',function(){
      if(currentMoveObj){
         currentMoveObj.releaseCapture();
         currentMoveObj=null;
      }
    });
      

  2.   

    //如果是window的话 拖动table表单的时候释放鼠标事件就没用了这句话什么意思???
      

  3.   

    <html>
    <head>
    <script language="javascript">
      var currentMoveObj = null;
    var relLeft = null;
    var relTop = null;
    function f_mdown(obj)
    {
    currentMoveObj=obj;
    //setCapture()可以让对象捕捉到鼠标事件,跟随着鼠标做出响应
    currentMoveObj.setCapture();//alert(event.x);
    //alert(currentMoveObj.style.pixelLeft);
    //alert(event.x);
    //alert(currentMoveObj.style.pixelLeft);
    relLeft=event.x-currentMoveObj.style.pixelLeft;
    relTop=event.y-currentMoveObj.style.pixelTop;}
      //问题主要在这里:当我鼠标不点击table表单的时候,点击其他空白处会出现
      //currentMoveObj对象为null,这个是因为我没有获取currentMoveObj对象。
      //怎样才能让我点击其他地方不会出现这种获取为空的现象。
      //如果是window的话 拖动table表单的时候释放鼠标事件就没用了
      //给个好的方法解决
    document.attachEvent('onmouseup',function(){
    if (!!currentMoveObj) {
    currentMoveObj.releaseCapture();
    currentMoveObj=null;
    }
    });function f_move(obj)
    {
    if(currentMoveObj!=null)
    {
    currentMoveObj.style.pixelLeft=event.x-relLeft;
    currentMoveObj.style.pixelTop=event.y-relTop;
    }}</script>
    </head>
    <body>
    <table id="test1" border="1" width="100" bgcolor="#FF0099" style="position:absolute;left:80;top:40;"  
    onmousedown="f_mdown(this)" onmousemove="f_move(this)">
    <tr bgcolor="#330099">
    <td align="center" style="cursor:move">table</td>
    </tr>
    <tr>
    <td align="center">content</td>
    </tr>
    </table>
    <table border=1 width="200" style="position:absolute;left:130;top:170;">
    <tr bgcolor="#00CCFF">
    <td align="center">table</td>
    </tr>
    <tr bgcolor="#990033">
    <td align="center">content</td>
    </tr>
    </table>
    </body>
    <html>