当前位置:首页 > 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 的误差累积。

js怎么实现分钟倒计时

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
分享给朋友:

相关文章

vue实现倒计时

vue实现倒计时

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

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js类实现

js类实现

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