当前位置:首页 > JavaScript

js实现秒表盘

2026-02-02 19:00:47JavaScript

js实现秒表盘

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

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 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Jav…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现日历

js实现日历

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

js 实现继承

js 实现继承

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

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…