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   白嫖老郭  阅读(63)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示