当前位置:首页 > JavaScript

js怎么实现分钟倒计时

2026-03-02 00:41:08JavaScript

实现分钟倒计时的方法

使用 setInterval 和日期计算

通过 setInterval 每秒更新倒计时,计算剩余时间并显示。

js怎么实现分钟倒计时

function startCountdown(minutes) {
  let seconds = minutes * 60;
  const countdownElement = document.getElementById('countdown');

  const timer = setInterval(() => {
    const mins = Math.floor(seconds / 60);
    const secs = seconds % 60;

    countdownElement.textContent = `${mins}:${secs < 10 ? '0' : ''}${secs}`;
    seconds--;

    if (seconds < 0) {
      clearInterval(timer);
      countdownElement.textContent = '时间到!';
    }
  }, 1000);
}

// 调用示例:开始5分钟倒计时
startCountdown(5);

使用 Date 对象精确倒计时

基于目标时间戳计算剩余时间,避免 setInterval 的误差累积。

function preciseCountdown(minutes) {
  const endTime = new Date();
  endTime.setMinutes(endTime.getMinutes() + minutes);
  const countdownElement = document.getElementById('countdown');

  const timer = setInterval(() => {
    const now = new Date();
    const remaining = Math.max(0, endTime - now);
    const mins = Math.floor(remaining / 60000);
    const secs = Math.floor((remaining % 60000) / 1000);

    countdownElement.textContent = `${mins}:${secs < 10 ? '0' : ''}${secs}`;

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

// 调用示例:开始3分钟倒计时
preciseCountdown(3);

使用 requestAnimationFrame 实现平滑动画

适合需要动态效果的场景,如进度条动画。

function animateCountdown(minutes) {
  const duration = minutes * 60 * 1000;
  const startTime = Date.now();
  const countdownElement = document.getElementById('countdown');

  function update() {
    const elapsed = Date.now() - startTime;
    const remaining = Math.max(0, duration - elapsed);
    const mins = Math.floor(remaining / 60000);
    const secs = Math.floor((remaining % 60000) / 1000);

    countdownElement.textContent = `${mins}:${secs < 10 ? '0' : ''}${secs}`;

    if (remaining > 0) {
      requestAnimationFrame(update);
    } else {
      countdownElement.textContent = '时间到!';
    }
  }

  requestAnimationFrame(update);
}

// 调用示例:开始2分钟倒计时
animateCountdown(2);

注意事项

  • 页面隐藏时(如切换标签页),浏览器可能降低定时器精度,推荐使用 visibilitychange 事件补偿。
  • 长时间倒计时需考虑存储剩余时间到 localStorage,防止页面刷新中断。
  • 移动端注意唤醒锁(Wakelock)防止屏幕休眠导致计时停止。

js怎么实现分钟倒计时

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

相关文章

vue实现倒计时

vue实现倒计时

Vue 实现倒计时的方法 使用 setInterval 实现基础倒计时 通过 Vue 的 data 定义倒计时时间,使用 setInterval 进行倒计时操作,并在组件销毁时清除定时器。 <…

js类实现

js类实现

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

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

节流js实现

节流js实现

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

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…