快捷导航

麻烦大神解释下以下代码中var timer=null为什么不能放在函数里面。

<script>  window.onload=function ()  {    var odiv=document.getElementById('div1');    odiv.onmouseover=function ()    {      StarMove(0);    }    odiv.onmouseout=function ()    {      StarMove(-100);    }  }//var timer=null; timer为什么一定要放在这里,而不能放在starmove函数里面 function StarMove(iTarget)  {    var odiv=document.getElementById('div1');    var timer=null; //放这里的运行结果有问题    clearInterval(timer);    timer=setInterval(function (){      var iSpeed=0;      if(odiv.offsetLeft

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员2

Javascript中function代表的是对象, 你放在外面是全局变量,你要是想在里面使用,每次调用一次StartMove是不是timer就会初始化为null呢?当然就会出现问题了...
回复

使用道具 举报

当timer=null放在外面的时候。全部setInterval,也就是每一次调用StarMove,共用一个timer变量来作原来定时器,clearInterval(timer)就可以清除掉之前的那一个定时器,再重新赋值给定时器。
当timer=null放在函数里面的时候。每一个,就是每一次onmouseover,调用函数StarMove时,都会新建一个var timer,然后再clearInterval(timer)就清除不了之前的定时器了。所以这时,每一次onmouseover时,都会叠加一个定时器。你就会看到方块的速度变快了。
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP