问答详情
源自:2-1 JS速度动画

可不可以帮我看一下哪里出错了,运行不出来​

window.onload=function(){
 var oDiv=document.getElementById('div1');

 oDiv.onmouseover=function(){
  startMove();
 }

}
var timer=null;
function startMove(){
 timer=setInterval(function()
 {
  if(oDiv.offsetLeft==0)
  {
   clearInterval(timer);
  }
  oDiv.style.left=oDiv.offsetLeft+10+'px';
 },300)
}

可不可以帮我看一下哪里出错了,运行不出来

提问者:慕用7235999 2017-07-24 16:09

个回答

  • 丶痞子绅士
    2017-09-23 22:08:55

    仔细看,你的oDiv定义在onload事件里的匿名方法里,既然在方法里,怎么会是全局变量呢?

    应该把oDiv放在最外面定义,这才是全局变量,这样子onload事件里的匿名方法和startMove()方法都能拿到ODiv的值。

    或者也可以把startMove()加一个参数,把oDiv传进去,然后在startMove()里拿这个oDiv也是可以的。

    而且你没有加else,如果不加else的话,在left值达到0之后,进入if语句块清理了计时器,还是会执行完if语句块后的这行代码的,不加else的话,你会发现你的oDiv左边多了10px的空隙。

  • 慕用7235999
    2017-07-24 16:17:20

    在函数startMove中,并未定义oDiv,还有没加else