zoukankan      html  css  js  c++  java
  • js定时器

    定时器分两种分别是setTimeout和setInterval。

    两者的用法分别是setTimeout(funhander,time);setInterval(fnhander,time);设置的相应计时器需要用clearTimeout(对象)和clearInterval(对象)清掉。有以下几点需要注意:

    第一:setTimeout(funhander,time)的作用是在过time毫秒后,执行一次句柄funhander指向的方法。而setInterval(funhander,time)的作用是,每隔time毫秒后,就执行一次句柄funhander指向的方法。一直到我清掉计时器停止。

    第二:巨大多数的计时器使用都是为了执行渐变、渐隐渐现、位置渐变等效果,所以funhander指向的方法会被多次执行。因此如果我们使用setTimeout做定时器,一般要把计时器的设置写在funhander指向的方法里,这样就可以循环调用,多次执行funhander,一直到我清掉这个定时器。而在使用setInterval设置定时器的时候,一般要放在funhander指向行数的外面。

    第三:funhander指向的方法里处理了渐变中的一步,又会被重复执行,所以在此方法中大多包含有判断语句IF。用来控制渐变到一定程度的时候进行相应处理。比如清掉定时器或者进行循环操作。

    第四:funhander为句柄,此处还可以为代码段,假设重复调用的函数为function test() {alert("1");}则,我们可以写为 var timer = setTimeout(test,1000)或者 var timer = setTimeout("test()",1000)或者 var timer = setTimeout("alert("1")",1000)。但是下面的写法是错误的。var timer = setTimeout(test(),1000)。

    第五:因为funhander部分是句柄,所以不能传递参数,但是有些函数是必须要传递参数的,这时候我们一般用代码段。如果碰到又需要用句柄,又不能用代码段的特殊情况,我们一般用比较特殊的方法处理。如 var timer =setTimeout(test(name),1000)。这时候这个test(name)看起来是不对的,实际上如果他的返回值是一个没有传参的方法,利用子函数可以调用父函数变量的特点,把参数传递到返回函数(子函数)内部。那上面的写法一样是可以的。

    第六:在设定时器的时候一定要有返回值timer(当然你可以起自己想要的名字)。清掉定时器的时候需要使用,也是一个好的习惯。

  • 相关阅读:
    Creative Cloud 无法连接问题
    HTTP_PROXY
    <video> controlsList
    Electron 问题
    含神经网络的离线AI翻译 APP

    (转载)移动Web开发技巧汇总
    2014年总结
    转载(web app变革之rem)
    火狐不支持backgroundPosition的js插件
  • 原文地址:https://www.cnblogs.com/sailortian/p/3401629.html
Copyright © 2011-2022 走看看