44-定时器

定时器的常见方法

  • setInterval():循环调用。将一段代码,每隔一段时间执行一次。(循环执行)

  • setTimeout():延时调用。将一段代码,等待一段时间之后再执行。(只执行一次)

备注:在实际开发中,二者是可以根据需要,互相替代的。

setInterval() 的使用

setInterval():循环调用。将一段代码,每隔一段时间执行一次。(循环执行)

参数

  • 参数1:回调函数,该函数会每隔一段时间被调用一次。

  • 参数2:每次调用的间隔时间,单位是毫秒。

返回值:返回一个Number类型的数据。这个数字用来作为定时器的唯一标识,方便用来清除定时器。

定义定时器

方式一:匿名函数

每间隔一秒,将 数字 加1:

  1. let num = 1;
  2. setInterval(function () {
  3. num ++;
  4. console.log(num);
  5. }, 1000);

方式二:

每间隔一秒,将 数字 加1:

  1. setInterval(fn,1000);
  2. function fn() {
  3. num ++;
  4. console.log(num);
  5. }

清除定时器

定时器的返回值是作为这个定时器的唯一标识,可以用来清除定时器。具体方法是:假设定时器setInterval()的返回值是参数1,那么clearInterval(参数1)就可以清除定时器。

setTimeout()的道理是一样的。

代码举例:

  1. <script>
  2. let num = 1;
  3. const timer = setInterval(function () {
  4. console.log(num); //每间隔一秒,打印一次num的值
  5. num ++;
  6. if(num === 5) { //打印四次之后,就清除定时器
  7. clearInterval(timer);
  8. }
  9. }, 1000);
  10. </script>

setTimeout() 的使用

setTimeout():延时调用。将一段代码,等待一段时间之后再执行。(只执行一次)

参数

  • 参数1:回调函数,该函数会每隔一段时间被调用一次。

  • 参数2:每次调用的间隔时间,单位是毫秒。

返回值:返回一个Number类型的数据。这个数字用来作为定时器的唯一标识,方便用来清除定时器。

定义和清除定时器

代码举例:

  1. const timer = setTimeout(function() {
  2. console.log(1); // 3秒之后,再执行这段代码。
  3. }, 3000);
  4. clearTimeout(timer);

代码举例:(箭头函数写法)

  1. setTimeout(() => {
  2. console.log(1); // 3秒之后,再执行这段代码。
  3. }, 3000);

setTimeout() 举例:5秒后关闭网页两侧的广告栏

假设网页两侧的广告栏为两个img标签,它们的样式为:

  1. <style>
  2. ...
  3. ...
  4. </style>

5秒后关闭广告栏的js代码为:

  1. <script>
  2. window.onload = function () {
  3. //获取相关元素
  4. var imgArr = document.getElementsByTagName("img");
  5. //设置定时器:5秒后关闭两侧的广告栏
  6. setTimeout(fn,5000);
  7. function fn(){
  8. imgArr[0].style.display = "none";
  9. imgArr[1].style.display = "none";
  10. }
  11. }
  12. </script>