JavaScript BOM中的setInterval

setInterval(foo, time)是用来做动画的常用函数之一,称为间歇定时器,由window调用,这点很重要。函数传入两个参数:

第一个是回调函数,里面写要重复执行的代码段,因为定时器是由window调用的,所以在回调函数里的this表示的是全局对象!这点在一些事件处理函数中再嵌套定时器时可能会被坑到,比如:

btn.onclick = function () {
      var that = this;
      setInterval (function() {
            this.attr = value;//这里的this指的是window,而不是btn对象,这么写无法达到预期效果
            that.attr = value;//正确
      }, 20);
}

第二个参数是时间(单位ms),表示每隔多久执行一次上述回调函数。


以下再记录下使用该函数时一些其他重要的注意点:

第一,务必在回调函数中开头清除定时器,即clearInterval(timer),其中timer为该定时器的ID,为定时器的返回值,即timer = setInterval(...);

防止定时器在你不知道的情况下被重复调用,叠加效果从而导致动画出现问题,因此每次调用回调函数前都得清除一下。

第二,使用对象属性来获取定时器ID值,如obj.timer,而不是简单的变量,防止清除某一定时器时误删别的定时器(尤其封装的动画函数中有定时器,函数中有传入要移动的对       象)。

第三,若给物体添加动画没有效果,检查看看是不是给物体DOM对象的style.left或是style.top赋值时最后没有加上“px”,这与CSS写法相同,且为字符串,务必记得加上,这个在浏览器上不会报错,不加注意很容易找不到错,所以务必牢记在心。还有个要检查的就是有没有给物体CSS样式中添加定位position: absolute,不加显然那些left,top属性就没有意义,这个初学也很容易忘记,之后记住即可。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值