当前位置:首页 > JavaScript

js实现倒进时

2026-04-07 09:58:03JavaScript

js实现倒进时

js实现倒进时

实现倒计时的方法

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

使用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实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…