document.onmousemove = mouseMove;   
    function mouseMove(ev){       
        ev  = ev || window.event;     
        mousePos = mouseCoords(ev);      }
    function mouseCoords(ev){      
        if(ev.pageX || ev.pageY){         
            return {x:ev.pageX, y:ev.pageY};       
        }
        return { x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,  y:ev.clientY + document.body.scrollTop- document.body.clientTop}; 
    }  
    document.onclick =function (){
        var div=document.getElementById('div');
        if(div){
            div.style.left=mousePos.x+'px';
            div.style.top=mousePos.y+'px';
        }
        //document.onclick ="";
    }
我看了很久 有点 实在不明白 mousePos  是否是个变量? 。。为啥不定义就可以直接用 如果 这样改
var mousePos = mouseCoords(ev);    显然  就变成了局部变量 下面使用的时候 就会错误 这个 到底 有什么用???

解决方案 »

  1.   

    mousePos = mouseCoords(ev);  返回来的是一个对象
    没有用var定义
      

  2.   

    如果函数内部定义变量时不用var进行声明,那么相当于:window.mousePos = mouseCoords(ev);也就是说mousePos是一个全局变量,本页面内任何JS函数都能引用它。
      

  3.   

    这个 我明白 如果不同方法体可以调用 那肯定就是一个全局变量 ,,,但是 问题是我没有 定义啊难道
    mousePos是 javaScript中默认的一个全局变量
      

  4.   


    function mouseMove(ev){       
            ev  = ev || window.event;     
            mousePos = mouseCoords(ev); //可能是全局变量,如果在js文件或页面中没有这个,那就是当前对象的一个属性;js是弱类型的语言,可以忽略var 的    }
      

  5.   

    哦 我晓得了这个 mousePos = mouseCoords(ev);  
    就相当于这个  window.mousePos = mouseCoords(ev);
    嘿嘿 ,明白了