当前位置:首页 > JavaScript

js实现倒计时秒

2026-03-01 03:32:37JavaScript

使用 setInterval 实现倒计时秒

通过 setInterval 定时器每秒更新倒计时显示,适用于简单的倒计时需求。

js实现倒计时秒

function countdown(seconds, callback) {
  const timer = setInterval(() => {
    console.log(seconds);
    seconds--;
    if (seconds < 0) {
      clearInterval(timer);
      callback && callback();
    }
  }, 1000);
}

// 示例:10秒倒计时结束后打印提示
countdown(10, () => console.log('倒计时结束'));

使用 requestAnimationFrame 实现高精度倒计时

通过 requestAnimationFrame 实现更平滑的倒计时,避免 setInterval 的误差积累问题。

js实现倒计时秒

function countdown(seconds, callback) {
  const startTime = Date.now();
  const endTime = startTime + seconds * 1000;

  function update() {
    const remaining = Math.max(0, Math.ceil((endTime - Date.now()) / 1000));
    console.log(remaining);
    if (remaining > 0) {
      requestAnimationFrame(update);
    } else {
      callback && callback();
    }
  }
  update();
}

// 示例:5秒倒计时
countdown(5, () => console.log('时间到'));

带暂停/继续功能的倒计时

通过状态管理实现可暂停的倒计时功能。

class Countdown {
  constructor(seconds, callback) {
    this.remaining = seconds;
    this.callback = callback;
    this.timer = null;
  }

  start() {
    this.timer = setInterval(() => {
      console.log(this.remaining);
      this.remaining--;
      if (this.remaining < 0) {
        this.stop();
        this.callback && this.callback();
      }
    }, 1000);
  }

  pause() {
    clearInterval(this.timer);
  }

  stop() {
    clearInterval(this.timer);
    this.timer = null;
  }
}

// 使用示例
const cd = new Countdown(3, () => console.log('结束'));
cd.start();
// cd.pause();  // 可随时暂停

页面显示的DOM倒计时

实现将倒计时显示在HTML页面上的完整示例。

<div id="countdown">10</div>
<button id="startBtn">开始</button>
<button id="pauseBtn">暂停</button>

<script>
  let timer;
  let seconds = 10;
  const display = document.getElementById('countdown');

  document.getElementById('startBtn').addEventListener('click', () => {
    clearInterval(timer);
    timer = setInterval(() => {
      display.textContent = seconds--;
      if (seconds < 0) {
        clearInterval(timer);
        display.textContent = '时间到';
      }
    }, 1000);
  });

  document.getElementById('pauseBtn').addEventListener('click', () => {
    clearInterval(timer);
  });
</script>

注意事项

  1. setInterval 可能因主线程阻塞导致时间不准确,重要场景建议使用服务器时间或Web Worker
  2. 移动端页面切到后台时定时器可能被暂停,需要监听 visibilitychange 事件
  3. 长时间倒计时需考虑内存泄漏问题,及时清除定时器
  4. 样式优化可添加过渡动画增强用户体验

标签: 倒计时js
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现自举

js实现自举

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

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js实现按钮点击

js实现按钮点击

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