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

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…