当前位置:首页 > JavaScript

js实现倒进时

2026-03-15 16:33:20JavaScript

JavaScript 实现倒计时

在 JavaScript 中实现倒计时功能通常涉及使用 setIntervalsetTimeout 定时器函数,结合日期计算或简单的数字递减逻辑。以下是几种常见的实现方式:

js实现倒进时

基于日期差的倒计时

计算目标时间与当前时间的差值,动态更新剩余时间:

js实现倒进时

function countdown(targetDate, displayElement) {
  const targetTime = new Date(targetDate).getTime();

  const timer = setInterval(() => {
    const now = new Date().getTime();
    const distance = targetTime - now;

    if (distance <= 0) {
      clearInterval(timer);
      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);
}

// 调用示例
countdown("2024-12-31T23:59:59", document.getElementById("countdown"));

简单数字递减倒计时

适用于固定秒数的倒计时(如 60 秒):

function simpleCountdown(seconds, displayElement) {
  let remaining = seconds;

  const timer = setInterval(() => {
    displayElement.textContent = remaining;
    remaining--;

    if (remaining < 0) {
      clearInterval(timer);
      displayElement.textContent = "时间到!";
    }
  }, 1000);
}

// 调用示例
simpleCountdown(60, document.getElementById("timer"));

使用 requestAnimationFrame 实现高精度倒计时

适用于需要高精度更新的场景(如动画):

function highPrecisionCountdown(endTime, callback) {
  let startTime = performance.now();

  function update() {
    const elapsed = performance.now() - startTime;
    const remaining = Math.max(0, endTime - elapsed);

    callback(remaining);

    if (remaining > 0) {
      requestAnimationFrame(update);
    }
  }

  update();
}

// 调用示例
highPrecisionCountdown(5000, (remaining) => {
  console.log((remaining / 1000).toFixed(2) + "秒剩余");
});

注意事项

  1. 性能优化:在页面隐藏时(如切换浏览器标签),setInterval 可能会被节流,建议使用 visibilitychange 事件补偿时间差。
  2. 清除定时器:组件卸载或倒计时结束时务必调用 clearIntervalcancelAnimationFrame
  3. 时区处理:涉及日期的倒计时需明确时区,建议使用 UTC 时间或指定时区。
  4. 格式化输出:可使用 padStart 补零(如 seconds.toString().padStart(2, '0'))。

标签: 倒进js
分享给朋友:

相关文章

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…