JS实现定时器

简介: JS实现定时器

JS实现定时器

有趣的小案例池子:

JS实现定时器
JS实现关闭图片窗口
JS实现输入检验
获取焦点后隐藏提示内容的输入框
JS实现获取鼠标在画布中的位置
聊天信息框显示消息
JS点击切换背景图
自动切换背景的登录页面
JS制作跟随鼠标移动的图片
JS实现记住用户密码

案例分析

我们需要制作一个定时器,可以在屏幕上面显示的。

  1. 首先我们需要的是,在三个黑色的盒子里面显示时间。
  2. 然后设置自动变化,利用setInterval实现。
  3. 最后使用innerHTML在三个盒子中分别设置时分秒。

结果展示

构建框架

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>
        <span class="hour">1</span>
        <span class="minute">2</span>
        <span class="second">3</span>
    </div>
</html>

CSS样式

<style>
        div {
            /* 把盒子设置到比较中间的位置 */
            margin-top: 200px;
            margin-left: 400px;
        }
        span {
            /* 设置成行内块元素 */
            display: inline-block;
            /* 设置盒子大小 */
            width: 40px;
            height: 40px;
            /* 设置背景颜色 */
            background-color: #333;
            /* 设置文字大小 */
            font-size: 20px;
            /* 设置文字颜色 */
            color: #fff;
            /* 设置文字居中 */
            text-align: center;
            /* 设置行高 */
            line-height: 40px;
        }
    </style>

JS逻辑

<script>
        // 1. 获取元素 
        var hour = document.querySelector('.hour'); // 小时的黑色盒子
        var minute = document.querySelector('.minute'); // 分钟的黑色盒子
        var second = document.querySelector('.second'); // 秒数的黑色盒子
        var inputTime = +new Date('2022-12-6 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>

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        div {
            /* 把盒子设置到比较中间的位置 */
            margin-top: 200px;
            margin-left: 400px;
        }
        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('2022-12-6 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>
</body>
</html>
相关文章
|
8月前
|
JavaScript
JS定时器
JS定时器
72 0
|
7月前
|
JavaScript 前端开发 安全
JavaScript基础-定时器:setTimeout, setInterval
【6月更文挑战第13天】JavaScript中的`setTimeout`和`setInterval`是异步编程的关键工具,用于按计划执行代码。`setTimeout`在延迟后执行一次,而`setInterval`则周期性执行。常见问题包括忘记清除定时器导致内存泄漏,递归使用`setTimeout`可能引发无限递归,以及字符串代码执行的安全隐患。解决方法包括使用`clearTimeout`和`clearInterval`,设置递归终止条件,以及优先使用函数表达式。理解定时器的非精确性并采用错误处理策略也是实践中的重要技巧。通过示例展示了如何延迟显示消息和周期性打印计数。
121 2
|
3月前
|
JavaScript 前端开发
js之一次性定时器
js之一次性定时器
22 1
|
3月前
|
JavaScript 前端开发
js之永久定时器
js之永久定时器
30 1
|
5月前
|
JavaScript 前端开发
解决在JS中阻止定时器“重复”开启问题、Vue中定时器的使用
这篇文章讨论了在JavaScript和Vue中如何避免定时器重复开启的问题,并提供了一个模拟场景和代码示例,演示了在开启新定时器前清除旧定时器的方法。
解决在JS中阻止定时器“重复”开启问题、Vue中定时器的使用
|
5月前
|
JavaScript 前端开发
js之永久定时器
js之永久定时器
|
5月前
|
JavaScript 前端开发
|
5月前
|
Web App开发 JavaScript 前端开发
JavaScript——定时器为什么是不精确的
JavaScript——定时器为什么是不精确的
81 0
|
5月前
|
JavaScript 前端开发
js之永久定时器
js之永久定时器
40 0
|
5月前
|
JavaScript 前端开发
js之一次性定时器
js之一次性定时器
36 0
下一篇
开通oss服务