当前位置:首页 > JavaScript

js怎么实现分钟倒计时

2026-03-02 00:41:08JavaScript

实现分钟倒计时的方法

使用 setInterval 和日期计算

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

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 实现平滑动画

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

js怎么实现分钟倒计时

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实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现延迟

js实现延迟

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

jquery js

jquery js

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

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…