当前位置:首页 > JavaScript

js实现计时

2026-03-15 09:14:42JavaScript

使用 setInterval 实现计时器

通过 setInterval 可以创建一个周期性执行的计时器,适合需要持续更新时间的场景。

let seconds = 0;
const timerElement = document.getElementById('timer');

const timer = setInterval(() => {
  seconds++;
  timerElement.textContent = `已计时: ${seconds} 秒`;
}, 1000);

// 停止计时
// clearInterval(timer);

使用 setTimeout 递归实现计时器

通过递归调用 setTimeout 实现计时,避免 setInterval 可能因任务阻塞导致的时间误差。

js实现计时

let seconds = 0;
const timerElement = document.getElementById('timer');

function updateTimer() {
  seconds++;
  timerElement.textContent = `已计时: ${seconds} 秒`;
  setTimeout(updateTimer, 1000);
}

updateTimer();

使用 Date 对象实现高精度计时

通过记录开始时间和当前时间的差值,实现更高精度的计时。

const startTime = new Date();
const timerElement = document.getElementById('timer');

function updateTimer() {
  const currentTime = new Date();
  const elapsed = Math.floor((currentTime - startTime) / 1000);
  timerElement.textContent = `已计时: ${elapsed} 秒`;
  requestAnimationFrame(updateTimer);
}

updateTimer();

实现暂停和继续功能

扩展基础计时器,添加暂停和继续功能。

js实现计时

let seconds = 0;
let isRunning = false;
let timerId;
const timerElement = document.getElementById('timer');

function startTimer() {
  if (!isRunning) {
    isRunning = true;
    timerId = setInterval(() => {
      seconds++;
      timerElement.textContent = `已计时: ${seconds} 秒`;
    }, 1000);
  }
}

function pauseTimer() {
  if (isRunning) {
    isRunning = false;
    clearInterval(timerId);
  }
}

function resetTimer() {
  seconds = 0;
  isRunning = false;
  clearInterval(timerId);
  timerElement.textContent = `已计时: 0 秒`;
}

格式化时间显示

将秒数转换为更易读的 HH:MM:SS 格式。

function formatTime(seconds) {
  const hours = Math.floor(seconds / 3600);
  const minutes = Math.floor((seconds % 3600) / 60);
  const secs = seconds % 60;
  return [
    hours.toString().padStart(2, '0'),
    minutes.toString().padStart(2, '0'),
    secs.toString().padStart(2, '0')
  ].join(':');
}

// 使用示例
console.log(formatTime(3661)); // 输出 "01:01:01"

使用 Web Worker 实现后台计时

通过 Web Worker 在后台线程运行计时逻辑,避免主线程阻塞。

// main.js
const worker = new Worker('timer-worker.js');
worker.onmessage = (e) => {
  document.getElementById('timer').textContent = `已计时: ${e.data} 秒`;
};

// timer-worker.js
let seconds = 0;
setInterval(() => {
  seconds++;
  postMessage(seconds);
}, 1000);

标签: js
分享给朋友:

相关文章

js实现二叉树

js实现二叉树

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

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…

js实现图片滚动

js实现图片滚动

图片滚动的实现方法 使用CSS动画实现 通过CSS的animation和@keyframes可以实现简单的图片滚动效果。这种方法适合静态图片的无缝循环滚动。 <style> .scr…