JavaScript:定时器

定时器(两种)

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

  • setTimeout()

  • setInterval()

setTimeout() 炸弹定时器

开启定时器

 

 

 

 

 

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>倒计时</title>
    <style>
        div {
            margin: 200px;
        }

        span {
            display: inline-block;
            width: 40px;
            height: 40px;
            background-color: #333;
            font-size: 20px;
            color: #fff;
            text-align: center;
            line-height: 40px;
        }
    </style>

</head>

<body>
    <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('2020-10-10 22: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>
</body>

</html>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>手机发送验证码</title>
    <script>
        document.addEventListener("DOMContentLoaded", function () {
            var btn = document.querySelector('#btn');
            var time = 59;
            btn.addEventListener('click', function () {
                //禁用按钮
                btn.disabled = true;
                //计时器
                var timer = setInterval(function () {
                    // 判断剩余秒数
                    if (time == 0) {
                        // 清除定时器和复原按钮
                        clearInterval(this);
                        btn.disabled = false;
                        btn.value = '发送';                       
                    } else {
                        btn.value =  time + '秒后从新发送';
                        time--;
                    }
                }, 1000);
            })
        })
    </script>
</head>

<body>
    手机号码: <input type="number"> <input id="btn" type="button" value="发送">

</body>

</html>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>计时器</title>
    <script>
        document.addEventListener("DOMContentLoaded", function () {
            //setTimeout:炸弹定时器两个参数,
            //第一个参数是回调函数(时间到了会去执行的逻辑),
            //第二个参数是设定的时间。。。多少时间去执行
            var timer = setTimeout(function () {
                var div = document.getElementById("vid")
                div.style.color = 'bule'
                var img = document.getElementsByTagName('img')[0]
                img.style.display = 'none'
                clearTimeout(timer);//关闭资源
            }, 5000)

            //**setInterval() 闹钟定时器**
            //每隔一定的时间就回去回调函数  :参数和炸弹定时器一致
           var intimer= setInterval(() => {
                var date = new Date();//得到一个当前时间
                function xingqi(date) {
                    let xingqi = date.getDay();
                    if (!(date instanceof Date)) {
                        return '传递的不是时间';
                    }
                    switch (xingqi) {
                        case 0: return '天';
                        case 1: return '一';
                        case 2: return '二';
                        case 3: return '三';
                        case 4: return '四';
                        case 5: return '五';
                        case 6: return '六';
                    }
                }
                var strdate = `${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日    星期 ${xingqi(date)}
                ${date.getHours()} 时 ${date.getMinutes()}分 ${date.getSeconds()}秒`;
                document.getElementById("time").innerHTML=strdate;
            }, 1000);
            //如果想要计时器一开始执行,需要将执行的方法在外部执行一次。
            var btn = document.getElementById("btn")
            btn.addEventListener('click',function(){
                clearInterval(intimer)
            })


        })
    </script>
</head>

<body>
    <div id="time">时间</div>
    <button id="btn"> 停止计时器</button>
    <div style="color: crimson;width: 700px;height: 700px;" id="vid">
        <img src="../案例/timg.jpg" alt="广告">
    </div>
    
</body>

</html>

 

posted on 2020-09-09 22:57  白嫖老郭  阅读(66)  评论(0)    收藏  举报

导航