46-定时器

21,658次阅读
没有评论

共计 1341 个字符,预计需要花费 4 分钟才能阅读完成。

定时器的常见方法

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

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

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

setInterval() 的使用

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

参数

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

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

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

定义定时器

方式一:匿名函数

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

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

方式二:

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

    setInterval(fn,1000);

    function fn() {
       num ++;
       console.log(num);
    }

清除定时器

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

setTimeout()的道理是一样的。

代码举例:

<script>
    let num = 1;

    const timer = setInterval(function () {console.log(num);  // 每间隔一秒,打印一次 num 的值
        num ++;
        if(num === 5) {  // 打印四次之后,就清除定时器
            clearInterval(timer);
        }

    }, 1000);
</script>

setTimeout() 的使用

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

参数

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

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

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

定义和清除定时器

代码举例:

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

    clearTimeout(timer);

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

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

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

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

<style>
    ...
    ...

</style>

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

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

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-10发表,共计1341字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)