当前位置:首页 > 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
分享给朋友:

相关文章

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

利用js实现

利用js实现

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

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…