当前位置:首页 > 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实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…