当前位置:首页 > JavaScript

用js实现秒表

2026-04-07 17:14:51JavaScript

使用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();

功能说明

  1. 开始功能:点击开始按钮后,计时器开始运行,显示实时的时间变化。

    用js实现秒表

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

    用js实现秒表

  3. 重置功能:点击重置按钮后,计时器停止并将时间重置为00:00:00。

  4. 时间显示:格式为HH:MM:SS,可以轻松修改为包含毫秒显示。

实现原理

  • 使用Date对象获取精确的时间戳
  • 通过setInterval每10毫秒更新一次显示
  • 计算经过的时间(elapsedTime)作为当前时间与开始时间的差值
  • 使用padStart方法确保时间数字始终显示两位数
  • 使用UTCHours等UTC方法避免时区影响

扩展建议

  1. 添加计次功能,记录多个时间点
  2. 增加本地存储功能,保存历史记录
  3. 添加音效提示
  4. 实现更精确的计时(使用performance.now()替代Date.now())
  5. 添加暗黑模式切换

这个实现简洁高效,适合大多数Web应用场景,可以根据需要进行进一步定制和扩展。

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

相关文章

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现图片放大缩小

js实现图片放大缩小

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

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

vue实现秒表

vue实现秒表

实现秒表功能 在Vue中实现秒表功能需要处理计时逻辑、显示格式以及控制按钮(开始、暂停、重置)。以下是具体实现步骤: 创建Vue组件 <template> <div class…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…