0
点赞
收藏
分享

微信扫一扫

JS 定时器setTimeout()与setInterval()

木匠0819 2022-04-20 阅读 116
javascript

定时器可以延时执行一段代码,实现数据实时更新、时间,实现某些需求

window 对象给我们提供了 2 个非常好用的方法-定时器。

setTimeout() 定时器

setTimeout() 方法用于设置一个定时器,该定时器在定时器到期后执行调用函数。

window.setTimeout(调用函数, [延迟的毫秒数]);
   var timer=setTimeout(function(){
        },1000);
        function callback() {
            console.log('爆炸了');
        }
        var timer1 = setTimeout(callback, 3000);
        // setTimeout('callback()', 3000); // 我们不提倡这个写法

setTimeout  延时时间到了,就去调用这个回调函数,只调用一次 就结束了这个定时器

注意:

1. window 可以省略。

2. 这个调用函数可以直接写函数,或者写函数名或者采取字符串‘函数名()'三种形式。第三种不推荐

3. 延迟的毫秒数省略默认是 0,如果写,必须是毫秒。

4. 因为定时器可能有很多,所以我们经常给定时器赋值一个标识符。

回调函数

setTimeout() 这个调用函数我们也称为回调函数 callback 普通函数是按照代码顺序直接调用。 而这个函数,需要等待时间,时间到了才去调用这个函数,因此称为回调函数。 简单理解: 回调,就是回头调用的意思。上一件事干完,再回头再调用这个函数。 以前我们讲的 element.onclick = function(){} 或者 element.addEventListener(“click”, fn); 里面的 函数也是回调 函数。

停止 setTimeout() 定时器

clearTimeout()方法取消了先前通过调用 setTimeout() 建立的定时器。

window.可以省略,里面的参数就是定时器的标识符 。

    <button>点击停止定时器</button>
    <script>
        //window.clearTimeout(timeoutID)
        var btn = document.querySelector('button');
        var timer = setTimeout(function() {
            console.log('爆炸了');
        }, 5000);
        btn.addEventListener('click', function() {
            clearTimeout(timer);
        })
    </script>

小栗子:5秒后将图片隐藏

<body>
    <img src="images/ad.jpg" alt="" class="ad">
    <script>
        // 获取要操作的元素
        var ad = document.querySelector('.ad');
		// 开启定时器
        setTimeout(function() {
            ad.style.display = 'none';//隐藏
        }, 5000);//5000毫秒=5秒
    </script>
</body>

setInterval() 定时器

window.setInterval(回调函数, [间隔的毫秒数]);
 setInterval(function() {
            console.log('继续输出');
        }, 1000);

setInterval() 方法重复调用一个函数,每隔这个时间,就去调用一次回调函数。可以执行多次

注意:

1. window 可以省略。

2. 这个调用函数可以直接写函数,或者写函数名或者采取字符串 '函数名()' 三种形式。

3. 间隔的毫秒数省略默认是 0,如果写,必须是毫秒,表示每隔多少毫秒就自动调用这个函数。

4.因为定时器可能有很多,所以我们经常给定时器赋值一个标识符。

5. 第一次执行也是间隔毫秒数之后执行,之后每隔毫秒数就执行一次。

停止 setInterval() 定时器

clearInterval()方法取消了先前通过调用 setInterval()建立的定时器。

window.可以省略,里面的参数就是定时器的标识符 。

window.clearInterval(intervalID);
stop.addEventListener('click', function() {
            clearInterval(timer);
        })

小栗子:秒杀倒计时

分析:倒计时是不断变化的,需要setInterval() 定时器三个盒子里面分别存放时分秒,利用innerHTML 放入计算的小时分钟秒数,第一次执行也是间隔毫秒数,因此刚刷新页面会有空白,最好采取封装函数的方式, 这样可以先调用一次这个函数,防止刚开始刷新页面有空白问 题

    <div>
        <span class="hour">1</span>
        <span class="minute">2</span>
        <span class="second">3</span>
    </div>
    <script>
        // 1. 获取元素(时分秒盒子) 
        var hour = document.querySelector('.hour'); // 小时的黑色盒子
        var minute = document.querySelector('.minute'); // 分钟的黑色盒子
        var second = document.querySelector('.second'); // 秒数的黑色盒子
        var inputTime = +new Date('2019-5-1 18:00:00'); // 返回的是用户输入时间总的毫秒数
        countDown(); // 我们先调用一次这个函数,防止第一次刷新页面有空白 
        // 2. 开启定时器
        setInterval(countDown, 1000);
        function countDown() {
            var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
            var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数 
            var h = parseInt(times / 60 / 60 % 24); //时
            h = h < 10 ? '0' + h : h;
            hour.innerHTML = h; // 把剩余的小时给 小时黑色盒子
            var m = parseInt(times / 60 % 60); // 分
            m = m < 10 ? '0' + m : m;
            minute.innerHTML = m;
            var s = parseInt(times % 60); // 当前的秒
            s = s < 10 ? '0' + s : s;
            second.innerHTML = s;
        }
    </script>
举报

相关推荐

0 条评论