当前位置:首页 > 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

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

相关文章

vue效果实现

vue效果实现

Vue 效果实现方法 Vue.js 提供了多种方式实现动态效果,包括过渡动画、状态驱动的 UI 变化以及第三方动画库集成。以下是常见效果的实现方案: 过渡动画 使用 Vue 内置的 <tran…

vue实现菜单效果

vue实现菜单效果

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

vue实现水印效果

vue实现水印效果

实现水印效果的几种方法 在Vue中实现水印效果可以通过多种方式,以下是几种常见的方法: 使用CSS背景图 通过CSS的background-image属性可以实现简单的水印效果。定义一个包含水印文本…

vue 实现过渡效果

vue 实现过渡效果

Vue 过渡效果实现方法 Vue 提供了 <transition> 和 <transition-group> 组件,用于在元素插入、更新或移除时应用动画效果。以下是具体实现方式…

vue实现不了效果

vue实现不了效果

在 Vue 中实现特定效果时遇到问题,通常与代码逻辑、数据绑定或生命周期管理有关。以下是常见排查方向和解决方案: 检查数据绑定 确保数据已正确声明并在模板中绑定。Vue 的响应式系统依赖 data…

vue实现删除效果

vue实现删除效果

Vue实现删除效果的方法 使用v-if或v-show控制显示 通过数据绑定和条件渲染指令,可以动态控制元素的显示与隐藏。v-if会完全移除DOM元素,v-show仅通过CSS控制显示。 <te…