当前位置:首页 > JavaScript

js 实现倒计时

2026-01-12 13:13:59JavaScript

实现倒计时的基本方法

使用 JavaScript 实现倒计时可以通过 setIntervalsetTimeout 结合日期计算来完成。以下是两种常见实现方式。

使用 setInterval 实现倒计时

通过 setInterval 每秒更新倒计时显示,直到时间为零。

js 实现倒计时

function startCountdown(targetTime, displayElement) {
  const countdownInterval = setInterval(() => {
    const now = new Date().getTime();
    const distance = targetTime - now;

    if (distance <= 0) {
      clearInterval(countdownInterval);
      displayElement.innerHTML = "倒计时结束";
      return;
    }

    const days = Math.floor(distance / (1000 * 60 * 60 * 24));
    const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    const seconds = Math.floor((distance % (1000 * 60)) / 1000);

    displayElement.innerHTML = `${days}天 ${hours}小时 ${minutes}分钟 ${seconds}秒`;
  }, 1000);
}

// 示例用法
const targetTime = new Date("2024-12-31").getTime();
const displayElement = document.getElementById("countdown");
startCountdown(targetTime, displayElement);

使用 setTimeout 实现倒计时

通过递归调用 setTimeout 实现倒计时,避免 setInterval 可能带来的累积误差。

js 实现倒计时

function updateCountdown(targetTime, displayElement) {
  const now = new Date().getTime();
  const distance = targetTime - now;

  if (distance <= 0) {
    displayElement.innerHTML = "倒计时结束";
    return;
  }

  const days = Math.floor(distance / (1000 * 60 * 60 * 24));
  const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
  const seconds = Math.floor((distance % (1000 * 60)) / 1000);

  displayElement.innerHTML = `${days}天 ${hours}小时 ${minutes}分钟 ${seconds}秒`;
  setTimeout(() => updateCountdown(targetTime, displayElement), 1000);
}

// 示例用法
const targetTime = new Date("2024-12-31").getTime();
const displayElement = document.getElementById("countdown");
updateCountdown(targetTime, displayElement);

优化倒计时显示

可以根据需求调整倒计时显示的格式,例如只显示小时、分钟和秒。

function formatTime(distance) {
  const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
  const seconds = Math.floor((distance % (1000 * 60)) / 1000);

  return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}

处理时区问题

如果倒计时涉及跨时区,建议使用 UTC 时间或明确指定时区。

const targetTime = new Date("2024-12-31T00:00:00Z").getTime();

性能考虑

倒计时不需要高精度时,可以将更新频率调整为每秒一次。若需要更高精度,可以缩短间隔时间,但需注意性能影响。

标签: 倒计时js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaS…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(…