原生JavaScript实现网页倒计时器教程

作者:半夏时间:2026-10-25 18:07:16浏览:318

本文详细介绍如何使用原生JavaScript编写一个简单的网页倒计时器。通过获取当前时间与指定到期时间的时间差,利用Math.floor进行天、时、分、秒的计算,并结合setInterval实现每秒刷新显示。文章涵盖HTML结构搭建、DOM操作及定时器逻辑,适合初学者学习前端基础。

原生JavaScript实现网页倒计时器教程

本文将展示如何使用原生JavaScript代码制作一个简单的网页倒计时器,供读者参考学习。

目标是实现一个计算距离特定日期(如某年某月某日)剩余时间的倒计时功能,具体效果如下所示。

原生JavaScript实现网页倒计时器教程

HTML结构搭建

首先处理HTML部分,需要编写基础的HTML结构,用于接收并展示倒计时的时间显示结果。

<div id="box"></div>

JavaScript核心逻辑实现

接下来重点介绍JavaScript代码的实现部分。

逻辑的核心在于获取当前系统时间,并设定一个目标到期时间,随后计算这两个时间点之间的时间差值。

function antitime() {
    var now = new Date(); //获取当前时间
    var to = new Date(2032, 1, 1, 0, 0, 0); //指定到期时间
    // 然后拿到当前时间和指定时间的时间差,注意 是毫秒数
    var deltaTime = (to - now) / 1000; //到期时间和当前时间相差的毫秒数/1000换算出总的秒数,方便后边用
    // console.log(deltaTime)

需要判断时间状态,如果当前时间已超过到期时间,则应停止倒计时过程。

if (deltaTime <= 0) {
// 停止计时器
 window.clearInterval(antitime);
}

基于计算出的总秒数,进一步换算为天、小时、分钟和秒。此过程涉及取整运算,可根据需要选择parseInt()或Math.floor(),本文示例中采用Math.floor()进行取整赋值,以便后续直接使用。

// 计算天数并给其赋值
   var d = Math.floor(deltaTime / 3600 / 24),
    // 计算小时并给其赋值
     h = Math.floor(deltaTime / 3600 % 24),
   // 计算分钟并给其赋值
     m = Math.floor(deltaTime / 60 % 60),
   // 计算秒数并给其赋值
    s = Math.floor(deltaTime % 60);

这本质上是时间单位换算的基础数学运算,理解原理后,只需将相关逻辑封装为函数即可简化代码结构。

为提升用户体验,将时间数值转换为字符串格式,若分、秒、毫秒不足10,则前面补0。 此处应有更优封装方法,为便于理解,采用当前写法。

if (d < 10) {
                d = '0' + d;
            } else if (h < 10) {
                h = '0' + h;
            } else if (m < 10) {
                m = '0' + m;
            } else if (s < 10) {
                s = '0' + s;
            }

接着定义一个空字符串变量,用于接收并最终拼接成完整的倒计时显示字符串。

var timer01 = '';
  timer01 = '距离2032年1月1日还有' + d + '天' + h + '小时' + m + '分' + s + '秒';
    document.getElementById('box');
    box.innerHTML = timer01;

利用document.getElementById()方法获取对应的DOM元素节点,以便向该节点填充数据并展示在页面上。通过box.innerHTML = timer01,将id为box的元素节点内容更新为timer01变量的值。

最后,启动定时器,设置每1000毫秒(即1秒)执行一次更新操作。

setInterval(antitime, 1000);

完整代码示例

以下是完整的JavaScript代码部分,已添加详细注释,供读者参考。

<script>
        //    指定计时器到期时间,首先先封装函数antitime()
        function antitime() {
            var now = new Date(); //获取当前时间
            var to = new Date(2032, 1, 1, 0, 0, 0); //指定到期时间
            // 然后拿到当前时间和指定时间的时间差,注意 是毫秒数
            var deltaTime = (to - now) / 1000; //到期时间和当前时间相差的毫秒数/1000换算出总的秒数,方便后边用
            // console.log(deltaTime)
            // 判断 如果时间超了,停止倒计时
            if (deltaTime <= 0) {
                // 停止计时器
                window.clearInterval(antitime);
            }
            // 已知毫秒数,计算天数时分秒
            // 这里用到了取整数的方法,用到哪在哪除,并给其定义赋值,方便后面取用,
            // 用parseInt()取整或者Math.floor()取整,在这里用的是Math.floor()。
            // 计算天数并给其赋值
            var d = Math.floor(deltaTime / 3600 / 24),
                // 计算小时并给其赋值
                h = Math.floor(deltaTime / 3600 % 24),
                // 计算分钟并给其赋值
                m = Math.floor(deltaTime / 60 % 60),
                // 计算秒数并给其赋值
                s = Math.floor(deltaTime % 60);

            //为了增加用户体验,把时间的数字转成字符串,如果分秒毫秒不足10,则前面补0。
            // 这里应该有更好的方法进行封装,为了更好理解,这样写出来。
            if (d < 10) {
                d = '0' + d;
            } else if (h < 10) {
                h = '0' + h;
            } else if (m < 10) {
                m = '0' + m;
            } else if (s < 10) {
                s = '0' + s;
            }
            // 定义一个空的字符串用来接收最后的值
            var timer01 = '';
            timer01 = '距离2032年1月1日还有' + d + '天' + h + '小时' + m + '分' + s + '秒';
            // document.getElementById() 获取DOM元素节点,方便向节点填入数据并显示
            document.getElementById('box');
            // 让id拥有box属性的元素节点在页面显示timer01中的内容
            box.innerHTML = timer01;
        }
        // 开启定时器,并让其1000毫秒更新一次
        setInterval(antitime, 1000);
</script>

以上就是本文的全部内容,希望能为各位的学习带来帮助,也欢迎大家继续支持本站。

作者最新文章