当前位置:首页 > 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 更精确,避免定时器堆积问题。

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

添加日期计算的精确倒数

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

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));

注意事项

js实现倒数

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

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

相关文章

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js实现授权

js实现授权

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

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js实现删除

js实现删除

使用 splice 方法删除数组元素 splice 方法可以删除数组中的元素,并返回被删除的元素。它接受两个参数:起始索引和要删除的元素数量。 const array = [1, 2, 3, 4…

js实现图片移动

js实现图片移动

使用CSS和JavaScript实现图片移动 方法一:使用CSS动画结合JavaScript控制 通过CSS定义动画关键帧,JavaScript动态添加或移除动画类。 /* CSS部分 */ .m…