当前位置:首页 > JavaScript

js怎么实现分钟倒计时

2026-01-31 09:28:30JavaScript

实现分钟倒计时的方法

在JavaScript中实现分钟倒计时可以通过以下步骤完成,核心是利用setIntervalsetTimeout函数结合时间计算。

基本倒计时逻辑

定义一个倒计时函数,接收总分钟数作为参数,转换为秒数后开始递减:

function startCountdown(minutes) {
  let seconds = minutes * 60;
  const countdownElement = document.getElementById('countdown'); // 显示倒计时的DOM元素

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

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

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

格式化时间显示

添加补零函数确保个位数时间显示为两位数:

function formatTime(time) {
  return time < 10 ? `0${time}` : time;
}

// 在倒计时函数中使用:
countdownElement.textContent = `${formatTime(mins)}:${formatTime(secs)}`;

暂停和继续功能

通过清除和重新设置定时器实现暂停与继续:

let timer;
let isPaused = false;
let remainingSeconds = 0;

function togglePause() {
  if (isPaused) {
    startCountdown(remainingSeconds / 60);
  } else {
    clearInterval(timer);
  }
  isPaused = !isPaused;
}

完整示例代码

<!DOCTYPE html>
<html>
<body>
  <div id="countdown">05:00</div>
  <button onclick="startCountdown(5)">开始5分钟倒计时</button>
  <button onclick="togglePause()">暂停/继续</button>

  <script>
    let timer;
    let isPaused = false;
    let remainingSeconds = 0;

    function startCountdown(minutes) {
      clearInterval(timer);
      remainingSeconds = minutes * 60;
      isPaused = false;

      timer = setInterval(updateCountdown, 1000);
    }

    function updateCountdown() {
      if (isPaused) return;

      const mins = Math.floor(remainingSeconds / 60);
      const secs = remainingSeconds % 60;
      document.getElementById('countdown').textContent = 
        `${formatTime(mins)}:${formatTime(secs)}`;

      if (remainingSeconds <= 0) {
        clearInterval(timer);
        document.getElementById('countdown').textContent = '时间到!';
      }
      remainingSeconds--;
    }

    function formatTime(time) {
      return time < 10 ? `0${time}` : time;
    }

    function togglePause() {
      isPaused = !isPaused;
    }
  </script>
</body>
</html>

使用Date对象精确计时

避免setInterval的误差,改用Date对象计算时间差:

js怎么实现分钟倒计时

let endTime;

function startCountdown(minutes) {
  endTime = new Date();
  endTime.setMinutes(endTime.getMinutes() + minutes);
  timer = setInterval(updateCountdown, 1000);
}

function updateCountdown() {
  const now = new Date();
  const diff = endTime - now;

  if (diff <= 0) {
    clearInterval(timer);
    document.getElementById('countdown').textContent = '时间到!';
    return;
  }

  const mins = Math.floor(diff / 60000);
  const secs = Math.floor((diff % 60000) / 1000);
  document.getElementById('countdown').textContent = 
    `${formatTime(mins)}:${formatTime(secs)}`;
}

注意事项

  • 页面切换时定时器可能失效,需使用Page Visibility API处理。
  • 移动端浏览器可能限制后台标签页的定时器执行频率。
  • 长时间倒计时建议使用服务器时间同步。

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

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现游标

js实现游标

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

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…