当前位置:首页 > JavaScript

js秒表实现

2026-02-01 04:20:28JavaScript

实现 JavaScript 秒表

基本 HTML 结构

创建一个简单的 HTML 结构,包含显示时间和控制按钮:

<div id="stopwatch">
  <div id="display">00:00:00</div>
  <button id="startBtn">开始</button>
  <button id="stopBtn">停止</button>
  <button id="resetBtn">重置</button>
</div>

CSS 样式(可选)

添加基本样式美化秒表:

js秒表实现

#stopwatch {
  text-align: center;
  font-family: Arial, sans-serif;
}
#display {
  font-size: 2em;
  margin: 20px;
}
button {
  padding: 10px 20px;
  margin: 5px;
  font-size: 1em;
}

JavaScript 核心逻辑

实现秒表功能的核心代码:

js秒表实现

let startTime;
let elapsedTime = 0;
let timerInterval;

function formatTime(time) {
  let hours = Math.floor(time / 3600000);
  let minutes = Math.floor((time % 3600000) / 60000);
  let seconds = Math.floor((time % 60000) / 1000);
  let milliseconds = Math.floor(time % 1000);

  return (
    String(hours).padStart(2, "0") + ":" +
    String(minutes).padStart(2, "0") + ":" +
    String(seconds).padStart(2, "0") + "." +
    String(milliseconds).padStart(3, "0").slice(0, 2)
  );
}

function startTimer() {
  startTime = Date.now() - elapsedTime;
  timerInterval = setInterval(function() {
    elapsedTime = Date.now() - startTime;
    document.getElementById("display").textContent = formatTime(elapsedTime);
  }, 10);
}

function stopTimer() {
  clearInterval(timerInterval);
}

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

document.getElementById("startBtn").addEventListener("click", startTimer);
document.getElementById("stopBtn").addEventListener("click", stopTimer);
document.getElementById("resetBtn").addEventListener("click", resetTimer);

高级功能扩展

添加计次功能:

let lapTimes = [];
const lapList = document.createElement("ol");
document.getElementById("stopwatch").appendChild(lapList);

function recordLap() {
  lapTimes.push(formatTime(elapsedTime));
  const lapItem = document.createElement("li");
  lapItem.textContent = lapTimes[lapTimes.length - 1];
  lapList.appendChild(lapItem);
}

// 添加计次按钮到HTML
const lapBtn = document.createElement("button");
lapBtn.textContent = "计次";
lapBtn.id = "lapBtn";
document.getElementById("stopwatch").appendChild(lapBtn);
document.getElementById("lapBtn").addEventListener("click", recordLap);

性能优化建议

使用 requestAnimationFrame 替代 setInterval:

function startTimer() {
  startTime = Date.now() - elapsedTime;
  function updateTimer() {
    elapsedTime = Date.now() - startTime;
    document.getElementById("display").textContent = formatTime(elapsedTime);
    timerInterval = requestAnimationFrame(updateTimer);
  }
  timerInterval = requestAnimationFrame(updateTimer);
}

function stopTimer() {
  cancelAnimationFrame(timerInterval);
}

注意事项

  • 确保按钮事件绑定在DOM加载完成后执行
  • 考虑添加暂停功能而不仅仅是停止
  • 移动端适配可能需要调整按钮大小和间距
  • 长时间运行时注意内存管理

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

相关文章

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现报表

js实现报表

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

js实现二叉树

js实现二叉树

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

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…