用js实现秒表
使用JavaScript实现秒表
以下是使用JavaScript实现秒表功能的完整代码示例,包含开始、暂停、重置功能。
HTML结构
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript秒表</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
.stopwatch {
text-align: center;
}
.display {
font-size: 3em;
margin-bottom: 20px;
}
button {
padding: 10px 20px;
margin: 0 5px;
font-size: 1em;
cursor: pointer;
}
</style>
</head>
<body>
<div class="stopwatch">
<div class="display">00:00:00</div>
<button id="startBtn">开始</button>
<button id="pauseBtn">暂停</button>
<button id="resetBtn">重置</button>
</div>
<script src="stopwatch.js"></script>
</body>
</html>
JavaScript实现
// 获取DOM元素
const display = document.querySelector('.display');
const startBtn = document.getElementById('startBtn');
const pauseBtn = document.getElementById('pauseBtn');
const resetBtn = document.getElementById('resetBtn');
// 初始化变量
let startTime;
let elapsedTime = 0;
let timerInterval;
let isRunning = false;
// 格式化时间显示
function formatTime(ms) {
let date = new Date(ms);
let hours = date.getUTCHours().toString().padStart(2, '0');
let minutes = date.getUTCMinutes().toString().padStart(2, '0');
let seconds = date.getUTCSeconds().toString().padStart(2, '0');
let milliseconds = Math.floor(date.getUTCMilliseconds() / 10).toString().padStart(2, '0');
return `${hours}:${minutes}:${seconds}`;
// 如果需要显示毫秒,使用下面这行
// return `${hours}:${minutes}:${seconds}.${milliseconds}`;
}
// 更新显示
function updateDisplay() {
display.textContent = formatTime(elapsedTime);
}
// 开始计时
function startTimer() {
if (!isRunning) {
startTime = Date.now() - elapsedTime;
timerInterval = setInterval(function() {
elapsedTime = Date.now() - startTime;
updateDisplay();
}, 10);
isRunning = true;
}
}
// 暂停计时
function pauseTimer() {
if (isRunning) {
clearInterval(timerInterval);
isRunning = false;
}
}
// 重置计时器
function resetTimer() {
pauseTimer();
elapsedTime = 0;
updateDisplay();
}
// 添加事件监听
startBtn.addEventListener('click', startTimer);
pauseBtn.addEventListener('click', pauseTimer);
resetBtn.addEventListener('click', resetTimer);
// 初始化显示
updateDisplay();
功能说明
-
开始功能:点击开始按钮后,计时器开始运行,显示实时的时间变化。

-
暂停功能:点击暂停按钮后,计时器停止运行,但保留当前时间值。

-
重置功能:点击重置按钮后,计时器停止并将时间重置为00:00:00。
-
时间显示:格式为HH:MM:SS,可以轻松修改为包含毫秒显示。
实现原理
- 使用Date对象获取精确的时间戳
- 通过setInterval每10毫秒更新一次显示
- 计算经过的时间(elapsedTime)作为当前时间与开始时间的差值
- 使用padStart方法确保时间数字始终显示两位数
- 使用UTCHours等UTC方法避免时区影响
扩展建议
- 添加计次功能,记录多个时间点
- 增加本地存储功能,保存历史记录
- 添加音效提示
- 实现更精确的计时(使用performance.now()替代Date.now())
- 添加暗黑模式切换
这个实现简洁高效,适合大多数Web应用场景,可以根据需要进行进一步定制和扩展。






