当前位置:首页 > JavaScript

js实现秒表

2026-03-14 04:23:10JavaScript

js实现秒表

实现秒表功能

使用JavaScript实现秒表功能可以通过Date对象或performance.now()来精确计时。以下是两种常见的实现方式。

js实现秒表

使用Date对象实现秒表

let startTime;
let elapsedTime = 0;
let timerInterval;

function startStopwatch() {
  startTime = new Date().getTime() - elapsedTime;
  timerInterval = setInterval(updateStopwatch, 10);
}

function stopStopwatch() {
  clearInterval(timerInterval);
}

function resetStopwatch() {
  clearInterval(timerInterval);
  elapsedTime = 0;
  document.getElementById("display").textContent = "00:00:00.000";
}

function updateStopwatch() {
  const currentTime = new Date().getTime();
  elapsedTime = currentTime - startTime;
  const formattedTime = formatTime(elapsedTime);
  document.getElementById("display").textContent = formattedTime;
}

function formatTime(time) {
  const hours = Math.floor(time / (1000 * 60 * 60));
  const minutes = Math.floor((time % (1000 * 60 * 60)) / (1000 * 60));
  const seconds = Math.floor((time % (1000 * 60)) / 1000);
  const milliseconds = Math.floor(time % 1000);

  return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}.${pad(milliseconds, 3)}`;
}

function pad(num, size = 2) {
  return num.toString().padStart(size, '0');
}

使用performance.now()实现秒表

performance.now()提供了更高精度的计时,适合需要更精确计时的场景。

let startTime;
let elapsedTime = 0;
let timerInterval;

function startStopwatch() {
  startTime = performance.now() - elapsedTime;
  timerInterval = requestAnimationFrame(updateStopwatch);
}

function stopStopwatch() {
  cancelAnimationFrame(timerInterval);
}

function resetStopwatch() {
  cancelAnimationFrame(timerInterval);
  elapsedTime = 0;
  document.getElementById("display").textContent = "00:00:00.000";
}

function updateStopwatch() {
  const currentTime = performance.now();
  elapsedTime = currentTime - startTime;
  const formattedTime = formatTime(elapsedTime);
  document.getElementById("display").textContent = formattedTime;
  timerInterval = requestAnimationFrame(updateStopwatch);
}

function formatTime(time) {
  const hours = Math.floor(time / (1000 * 60 * 60));
  const minutes = Math.floor((time % (1000 * 60 * 60)) / (1000 * 60));
  const seconds = Math.floor((time % (1000 * 60)) / 1000);
  const milliseconds = Math.floor(time % 1000);

  return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}.${pad(milliseconds, 3)}`;
}

function pad(num, size = 2) {
  return num.toString().padStart(size, '0');
}

HTML部分

<div id="display">00:00:00.000</div>
<button onclick="startStopwatch()">Start</button>
<button onclick="stopStopwatch()">Stop</button>
<button onclick="resetStopwatch()">Reset</button>

CSS部分(可选)

#display {
  font-family: monospace;
  font-size: 2em;
  margin: 20px;
}

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

注意事项

  • performance.now()提供微秒级精度,但可能受浏览器限制。
  • setInterval的精度可能受系统负载影响,requestAnimationFrame更适合平滑动画。
  • 使用padStart确保时间格式始终为两位数,保持显示一致。

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

相关文章

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…