当前位置:首页 > JavaScript

用js实现一个倒计时器

2026-04-05 04:31:11JavaScript

实现基础倒计时器

创建一个简单的倒计时器需要设置目标时间,计算剩余时间并更新显示。以下代码展示如何实现从10秒开始的倒计时:

let countdown = 10;
const timerElement = document.getElementById('timer');

function updateTimer() {
  timerElement.textContent = countdown;
  if (countdown <= 0) {
    clearInterval(interval);
    timerElement.textContent = '时间到!';
    return;
  }
  countdown--;
}

const interval = setInterval(updateTimer, 1000);

自定义时长倒计时

允许用户输入自定义倒计时时长:

用js实现一个倒计时器

function startCustomCountdown() {
  const minutes = parseInt(document.getElementById('minutes').value) || 0;
  const seconds = parseInt(document.getElementById('seconds').value) || 0;
  let totalSeconds = minutes * 60 + seconds;

  const interval = setInterval(() => {
    const mins = Math.floor(totalSeconds / 60);
    const secs = totalSeconds % 60;

    document.getElementById('custom-timer').textContent = 
      `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;

    if (totalSeconds <= 0) clearInterval(interval);
    totalSeconds--;
  }, 1000);
}

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

实现可控制的倒计时器:

用js实现一个倒计时器

let timer;
let remainingTime = 300; // 5分钟
let isRunning = false;

function toggleTimer() {
  if (isRunning) {
    clearInterval(timer);
    isRunning = false;
  } else {
    timer = setInterval(updateDisplay, 1000);
    isRunning = true;
  }
}

function updateDisplay() {
  const minutes = Math.floor(remainingTime / 60);
  const seconds = remainingTime % 60;
  document.getElementById('control-timer').textContent = 
    `${minutes}:${seconds.toString().padStart(2, '0')}`;

  if (remainingTime <= 0) {
    clearInterval(timer);
    return;
  }
  remainingTime--;
}

精确到毫秒的倒计时

使用requestAnimationFrame实现高精度倒计时:

let startTime;
let duration = 5000; // 5秒

function startPreciseCountdown() {
  startTime = performance.now();
  requestAnimationFrame(updatePreciseTimer);
}

function updatePreciseTimer(timestamp) {
  const elapsed = timestamp - startTime;
  const remaining = Math.max(0, duration - elapsed);

  const seconds = (remaining / 1000).toFixed(2);
  document.getElementById('precise-timer').textContent = seconds;

  if (remaining > 0) {
    requestAnimationFrame(updatePreciseTimer);
  }
}

页面不可见时暂停倒计时

使用Page Visibility API优化性能:

document.addEventListener('visibilitychange', () => {
  if (document.hidden) {
    clearInterval(timer);
  } else {
    timer = setInterval(updateTimer, 1000);
  }
});

每个实现方案都针对不同使用场景,基础版本适合简单需求,自定义时长版本提供灵活性,控制版本适合需要交互的场景,高精度版本适用于对时间敏感的应用。根据实际需求选择合适的实现方式。

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

相关文章

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现日历

js实现日历

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

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…