当前位置:首页 > JavaScript

js实现秒表盘

2026-02-02 19:00:47JavaScript

以下是用JavaScript实现秒表盘的代码示例,包含开始、暂停、重置功能,并显示毫秒级精度:

js实现秒表盘

HTML结构

<div class="stopwatch">
  <div class="display">00:00:00.000</div>
  <button class="start">开始</button>
  <button class="pause">暂停</button>
  <button class="reset">重置</button>
</div>

CSS样式

.stopwatch {
  text-align: center;
  font-family: Arial, sans-serif;
}

.display {
  font-size: 3em;
  margin: 20px;
}

button {
  padding: 10px 20px;
  margin: 5px;
  font-size: 1em;
  cursor: pointer;
}

JavaScript实现

class Stopwatch {
  constructor(display) {
    this.display = display;
    this.running = false;
    this.startTime = null;
    this.elapsedTime = 0;
    this.timer = null;
  }

  start() {
    if (!this.running) {
      this.startTime = Date.now() - this.elapsedTime;
      this.timer = setInterval(() => this.update(), 10);
      this.running = true;
    }
  }

  pause() {
    if (this.running) {
      clearInterval(this.timer);
      this.elapsedTime = Date.now() - this.startTime;
      this.running = false;
    }
  }

  reset() {
    clearInterval(this.timer);
    this.running = false;
    this.elapsedTime = 0;
    this.display.textContent = '00:00:00.000';
  }

  update() {
    const elapsed = Date.now() - this.startTime;
    const milliseconds = Math.floor(elapsed % 1000);
    const seconds = Math.floor((elapsed / 1000) % 60);
    const minutes = Math.floor((elapsed / (1000 * 60)) % 60);
    const hours = Math.floor(elapsed / (1000 * 60 * 60));

    this.display.textContent = 
      `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}.${milliseconds.toString().padStart(3, '0')}`;
  }
}

// 初始化
const display = document.querySelector('.display');
const startBtn = document.querySelector('.start');
const pauseBtn = document.querySelector('.pause');
const resetBtn = document.querySelector('.reset');

const stopwatch = new Stopwatch(display);

startBtn.addEventListener('click', () => stopwatch.start());
pauseBtn.addEventListener('click', () => stopwatch.pause());
resetBtn.addEventListener('click', () => stopwatch.reset());

功能说明

  • 开始:点击后开始计时,显示时:分:秒.毫秒格式
  • 暂停:暂停当前计时,保留已计时数值
  • 重置:将计时器归零,显示00:00:00.000

扩展建议

  1. 添加分段计时功能(记录多个时间点)
  2. 增加样式美化,如环形进度条显示
  3. 添加声音提示功能
  4. 支持键盘快捷键操作

该实现使用面向对象方式组织代码,便于维护和扩展。核心计时逻辑通过Date.now()获取时间戳,避免了setInterval的时间漂移问题。

标签: 表盘js
分享给朋友:

相关文章

js实现日历

js实现日历

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

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…