当前位置:首页 > 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
分享给朋友:

相关文章

vue实现倒计时

vue实现倒计时

Vue 实现倒计时的方法 使用 setInterval 实现基础倒计时 通过 Vue 的 data 定义倒计时时间,使用 setInterval 进行倒计时操作,并在组件销毁时清除定时器。 <…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="sli…

js实现求导

js实现求导

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

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="my…