当前位置:首页 > JavaScript

js实现倒进时

2026-04-07 09:58:03JavaScript

实现倒计时的方法

使用JavaScript实现倒计时可以通过多种方式完成,以下是几种常见的方法:

js实现倒进时

使用setInterval实现倒计时

function countdown(seconds) {
  let timer = setInterval(() => {
    console.log(seconds);
    seconds--;
    if (seconds < 0) {
      clearInterval(timer);
      console.log("倒计时结束");
    }
  }, 1000);
}
countdown(10);

使用setTimeout递归实现倒计时

function countdown(seconds) {
  console.log(seconds);
  if (seconds > 0) {
    setTimeout(() => countdown(seconds - 1), 1000);
  } else {
    console.log("倒计时结束");
  }
}
countdown(10);

带页面显示的倒计时

<div id="countdown">10</div>
<script>
  function updateCountdown(seconds) {
    document.getElementById("countdown").textContent = seconds;
    if (seconds > 0) {
      setTimeout(() => updateCountdown(seconds - 1), 1000);
    }
  }
  updateCountdown(10);
</script>

带格式化时间的倒计时

function formatTime(seconds) {
  const mins = Math.floor(seconds / 60);
  const secs = seconds % 60;
  return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
}

function countdown(totalSeconds) {
  console.log(formatTime(totalSeconds));
  if (totalSeconds > 0) {
    setTimeout(() => countdown(totalSeconds - 1), 1000);
  }
}
countdown(125);  // 02:05开始

精确到毫秒的倒计时

function preciseCountdown(endTime) {
  const timer = setInterval(() => {
    const now = new Date().getTime();
    const distance = endTime - now;
    if (distance <= 0) {
      clearInterval(timer);
      console.log("倒计时结束");
      return;
    }
    const days = Math.floor(distance / (1000 * 60 * 60 * 24));
    const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    const seconds = Math.floor((distance % (1000 * 60)) / 1000);
    console.log(`${days}d ${hours}h ${minutes}m ${seconds}s`);
  }, 1000);
}

const endDate = new Date();
endDate.setDate(endDate.getDate() + 1);  // 设置为明天此时
preciseCountdown(endDate.getTime());

注意事项

  • 使用setInterval时记得在倒计时结束后调用clearInterval
  • 递归调用setTimeout可以避免setInterval可能带来的时间漂移问题
  • 对于长时间倒计时,需要考虑时区、夏令时等因素
  • 页面不可见时(如浏览器最小化),某些浏览器会降低定时器精度

标签: 倒进js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现延迟

js实现延迟

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

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现vue路由

js实现vue路由

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