当前位置:首页 > 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 可能因任务阻塞导致的时间误差。

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

实现暂停和继续功能

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

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 在后台线程运行计时逻辑,避免主线程阻塞。

js实现计时

// 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实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…