当前位置:首页 > JavaScript

js倒计时效果实现

2026-01-31 11:24:07JavaScript

使用 setTimeout 实现倒计时

通过递归调用 setTimeout 实现倒计时功能,适用于简单的倒计时需求。

function countdown(seconds) {
  if (seconds <= 0) {
    console.log("倒计时结束");
    return;
  }

  console.log(`剩余时间: ${seconds}秒`);
  setTimeout(() => countdown(seconds - 1), 1000);
}

countdown(10);

使用 setInterval 实现倒计时

通过 setInterval 定时器实现更精确的倒计时控制,可以随时清除定时器。

let seconds = 10;
const timer = setInterval(() => {
  if (seconds <= 0) {
    clearInterval(timer);
    console.log("倒计时结束");
    return;
  }

  console.log(`剩余时间: ${seconds}秒`);
  seconds--;
}, 1000);

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

实现可暂停、继续的倒计时功能,适合需要交互的场景。

js倒计时效果实现

let seconds = 10;
let timer = null;
let isPaused = false;

function startCountdown() {
  timer = setInterval(() => {
    if (seconds <= 0) {
      clearInterval(timer);
      console.log("倒计时结束");
      return;
    }

    if (!isPaused) {
      console.log(`剩余时间: ${seconds}秒`);
      seconds--;
    }
  }, 1000);
}

function pauseCountdown() {
  isPaused = true;
}

function resumeCountdown() {
  isPaused = false;
}

startCountdown();
// 调用 pauseCountdown() 暂停
// 调用 resumeCountdown() 继续

页面显示的倒计时

在HTML页面中显示实时更新的倒计时效果。

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

<script>
  let seconds = 10;
  let timer = null;
  let isPaused = false;

  document.getElementById('startBtn').addEventListener('click', () => {
    if (timer) clearInterval(timer);
    seconds = 10;
    startCountdown();
  });

  document.getElementById('pauseBtn').addEventListener('click', () => {
    isPaused ? resumeCountdown() : pauseCountdown();
  });

  function startCountdown() {
    isPaused = false;
    timer = setInterval(updateCountdown, 1000);
  }

  function pauseCountdown() {
    isPaused = true;
  }

  function resumeCountdown() {
    isPaused = false;
  }

  function updateCountdown() {
    if (seconds <= 0) {
      clearInterval(timer);
      document.getElementById('countdown').textContent = "倒计时结束";
      return;
    }

    if (!isPaused) {
      document.getElementById('countdown').textContent = seconds;
      seconds--;
    }
  }
</script>

精确到毫秒的倒计时

实现毫秒级精度的倒计时显示。

js倒计时效果实现

let endTime = Date.now() + 10000; // 10秒后结束

function updateCountdown() {
  const now = Date.now();
  const remaining = endTime - now;

  if (remaining <= 0) {
    console.log("倒计时结束");
    return;
  }

  const seconds = Math.floor(remaining / 1000);
  const milliseconds = remaining % 1000;
  console.log(`剩余时间: ${seconds}.${milliseconds}秒`);

  requestAnimationFrame(updateCountdown);
}

updateCountdown();

带回调函数的倒计时

通过回调函数处理倒计时结束事件。

function countdownWithCallback(seconds, callback) {
  const timer = setInterval(() => {
    if (seconds <= 0) {
      clearInterval(timer);
      callback();
      return;
    }

    console.log(`剩余时间: ${seconds}秒`);
    seconds--;
  }, 1000);
}

countdownWithCallback(5, () => {
  console.log("倒计时完成,执行回调函数");
});

格式化显示的倒计时

将倒计时格式化为分钟:秒的形式显示。

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 countdownFormatted(seconds) {
  const timer = setInterval(() => {
    if (seconds <= 0) {
      clearInterval(timer);
      console.log("00:00 倒计时结束");
      return;
    }

    console.log(formatTime(seconds));
    seconds--;
  }, 1000);
}

countdownFormatted(125); // 显示格式: 02:05

标签: 倒计时效果
分享给朋友:

相关文章

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现点击效果

js实现点击效果

实现点击效果的JavaScript方法 使用addEventListener绑定点击事件 通过document.getElementById或document.querySelector获取DOM元素…

vue实现动画效果

vue实现动画效果

Vue 实现动画效果的方法 Vue 提供了多种方式来实现动画效果,包括内置的过渡系统、第三方动画库以及 CSS 动画。以下是几种常见的方法: 使用 Vue 内置的过渡系统 Vue 的 <tra…

vue实现筛选效果

vue实现筛选效果

Vue 实现筛选效果的方法 基于计算属性的筛选 在 Vue 中可以通过计算属性实现数据的动态筛选。定义一个计算属性,根据用户输入的筛选条件返回过滤后的数据列表。 <template>…

vue实现菜单效果

vue实现菜单效果

Vue实现菜单效果的方法 基础菜单实现 使用Vue的v-for指令和v-show/v-if可以快速实现基础菜单。通过数据驱动的方式渲染菜单项,结合事件处理实现交互。 <template>…

vue实现multiselect效果

vue实现multiselect效果

Vue 实现多选(Multiselect)效果 使用第三方库 vue-multiselect 安装 vue-multiselect 库: npm install vue-multiselect 在…