00:00:00
当前位置:首页 > JavaScript

js实现自定义倒计时器

2026-03-02 03:34:41JavaScript

实现自定义倒计时器的步骤

1. 创建HTML结构
在HTML中定义一个容器用于显示倒计时,并添加必要的按钮控制:

<div id="countdown">00:00:00</div>
<button id="startBtn">开始</button>
<button id="pauseBtn">暂停</button>
<button id="resetBtn">重置</button>

2. 定义CSS样式(可选)
为倒计时器添加基础样式:

js实现自定义倒计时器

#countdown {
  font-size: 2rem;
  text-align: center;
  margin: 20px;
}
button {
  padding: 8px 16px;
  margin: 5px;
}

3. JavaScript核心逻辑
通过setIntervalclearInterval实现计时功能:

let timer;
let seconds = 0;
const countdownEl = document.getElementById('countdown');
const startBtn = document.getElementById('startBtn');
const pauseBtn = document.getElementById('pauseBtn');
const resetBtn = document.getElementById('resetBtn');

// 格式化时间显示(HH:MM:SS)
function formatTime(secs) {
  const hours = Math.floor(secs / 3600).toString().padStart(2, '0');
  const minutes = Math.floor((secs % 3600) / 60).toString().padStart(2, '0');
  const seconds = (secs % 60).toString().padStart(2, '0');
  return `${hours}:${minutes}:${seconds}`;
}

// 开始计时
startBtn.addEventListener('click', () => {
  if (!timer) {
    timer = setInterval(() => {
      seconds++;
      countdownEl.textContent = formatTime(seconds);
    }, 1000);
  }
});

// 暂停计时
pauseBtn.addEventListener('click', () => {
  clearInterval(timer);
  timer = null;
});

// 重置计时
resetBtn.addEventListener('click', () => {
  clearInterval(timer);
  timer = null;
  seconds = 0;
  countdownEl.textContent = formatTime(seconds);
});

高级功能扩展

1. 自定义初始时间
修改代码以支持设置初始时间:

js实现自定义倒计时器

let totalSeconds = 3600; // 初始化为1小时
// 在计时逻辑中将seconds++改为seconds--

2. 添加完成回调
倒计时结束时触发事件:

if (seconds <= 0) {
  clearInterval(timer);
  alert('倒计时结束!');
}

3. 本地存储持久化
使用localStorage保存计时状态:

// 页面加载时读取
if (localStorage.getItem('countdownTime')) {
  seconds = parseInt(localStorage.getItem('countdownTime'));
  countdownEl.textContent = formatTime(seconds);
}

// 在计时逻辑中添加保存
localStorage.setItem('countdownTime', seconds.toString());

注意事项

  • 使用padStart(2, '0')确保两位数显示
  • 清除定时器时需将timer变量设为null防止内存泄漏
  • 移动端需考虑触摸事件替代点击事件

分享给朋友:

相关文章

vue实现自定义登录

vue实现自定义登录

Vue 实现自定义登录功能 创建登录组件 在 Vue 项目中创建一个独立的登录组件,例如 Login.vue。该组件包含表单元素,如用户名和密码输入框,以及提交按钮。 <template&g…

vue实现自定义事件

vue实现自定义事件

Vue 自定义事件实现方法 在 Vue 中,自定义事件是通过 $emit 方法触发的,父组件通过 v-on 或 @ 监听子组件触发的事件。以下是几种常见的实现方式: 子组件触发事件 在子组件中…

uniapp自定义隐私政策弹窗

uniapp自定义隐私政策弹窗

实现自定义隐私政策弹窗 在UniApp中实现自定义隐私政策弹窗,通常需要结合条件渲染和本地存储功能。以下是一个典型实现方案: 模板部分 <template> <view cl…

vue实现计时器

vue实现计时器

实现计时器的基本逻辑 在Vue中实现计时器通常需要利用setInterval或setTimeout来更新计时状态,并通过Vue的响应式系统动态显示时间。计时器的核心是记录开始时间、暂停时间以及计算当前…

react实现计时器

react实现计时器

React 实现计时器的方法 使用 useState 和 useEffect 实现基础计时器 通过 React 的 useState 和 useEffect 可以轻松实现一个计时器功能。以下是一个简单…

js实现计时器效果

js实现计时器效果

使用 setTimeout 实现单次计时器 通过 setTimeout 可以在指定延迟后执行一次回调函数。适合单次延迟执行的场景。 setTimeout(() => { console.l…