当前位置:首页 > 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 样式(可选)

添加基本样式美化秒表:

#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 核心逻辑

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

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

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的H…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div c…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…