当前位置:首页 > JavaScript

js实现倒数

2026-02-02 01:33:16JavaScript

实现倒数功能的 JavaScript 方法

使用 setInterval 实现动态倒数

通过 setInterval 设置定时器,每秒更新显示剩余时间。适用于需要实时显示倒计时的场景。

function countdown(seconds) {
  let remaining = seconds;
  const timer = setInterval(() => {
    console.log(remaining);
    remaining--;
    if (remaining < 0) {
      clearInterval(timer);
      console.log("Countdown finished!");
    }
  }, 1000);
}
countdown(10); // 从10开始倒数

使用 setTimeout 实现递归倒数

通过递归调用 setTimeout 实现倒计时。相比 setInterval 更精确,避免定时器堆积问题。

js实现倒数

function countdown(seconds) {
  console.log(seconds);
  if (seconds > 0) {
    setTimeout(() => countdown(seconds - 1), 1000);
  } else {
    console.log("Countdown finished!");
  }
}
countdown(10);

添加日期计算的精确倒数

适用于需要显示天、小时、分钟和秒的场景,基于目标日期计算剩余时间。

js实现倒数

function countdownToDate(targetDate) {
  const interval = setInterval(() => {
    const now = new Date();
    const diff = targetDate - now;

    if (diff <= 0) {
      clearInterval(interval);
      console.log("Countdown finished!");
      return;
    }

    const days = Math.floor(diff / (1000 * 60 * 60 * 24));
    const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
    const seconds = Math.floor((diff % (1000 * 60)) / 1000);

    console.log(`${days}d ${hours}h ${minutes}m ${seconds}s`);
  }, 1000);
}

const targetDate = new Date("2024-12-31T23:59:59");
countdownToDate(targetDate);

使用 Promise 实现异步倒数

通过 Promise 封装倒计时逻辑,便于在异步流程中使用。

function asyncCountdown(seconds) {
  return new Promise((resolve) => {
    const timer = setInterval(() => {
      console.log(seconds);
      seconds--;
      if (seconds < 0) {
        clearInterval(timer);
        resolve("Countdown finished!");
      }
    }, 1000);
  });
}

asyncCountdown(5).then(message => console.log(message));

注意事项

  • 定时器可能因浏览器选项卡处于后台或设备休眠而延迟,精确倒计时需使用 Web Worker 或服务器时间
  • 清除定时器使用 clearIntervalclearTimeout 避免内存泄漏
  • 页面显示倒计时需操作 DOM 而非 console.log

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

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现文件下载

js实现文件下载

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

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…