当前位置:首页 > JavaScript

js实现计时功能

2026-04-04 05:25:00JavaScript

使用 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 对象实现高精度计时

通过 Date 对象记录开始时间,计算时间差实现高精度计时。

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

setInterval(() => {
  const elapsed = Math.floor((new Date() - startTime) / 1000);
  timerElement.textContent = `已运行: ${elapsed} 秒`;
}, 1000);

实现暂停/继续功能

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

js实现计时功能

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

function startTimer() {
  timer = setInterval(() => {
    if (!isPaused) {
      seconds++;
      timerElement.textContent = `已运行: ${seconds} 秒`;
    }
  }, 1000);
}

function togglePause() {
  isPaused = !isPaused;
}

startTimer();

格式化时间显示

将秒数格式化为更易读的 HH:MM:SS 形式。

function formatTime(seconds) {
  const h = Math.floor(seconds / 3600);
  const m = Math.floor((seconds % 3600) / 60);
  const s = seconds % 60;
  return `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;
}

// 使用示例
timerElement.textContent = formatTime(seconds);

使用 Web Worker 实现后台计时

避免主线程阻塞,使用 Web Worker 实现精确的后台计时。

js实现计时功能

// worker.js
let seconds = 0;

setInterval(() => {
  seconds++;
  postMessage(seconds);
}, 1000);

// 主线程
const worker = new Worker('worker.js');
worker.onmessage = (e) => {
  document.getElementById('timer').textContent = `已运行: ${e.data} 秒`;
};

使用 requestAnimationFrame 实现动画计时

适合需要与屏幕刷新率同步的动画计时场景。

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

function updateTimer(timestamp) {
  if (!startTime) startTime = timestamp;
  const elapsed = Math.floor((timestamp - startTime) / 1000);
  timerElement.textContent = `已运行: ${elapsed} 秒`;
  requestAnimationFrame(updateTimer);
}

requestAnimationFrame(updateTimer);

使用 performance.now() 实现高精度计时

Date 对象精度更高,适合需要微秒级精度的场景。

const startTime = performance.now();
const timerElement = document.getElementById('timer');

setInterval(() => {
  const elapsed = Math.floor((performance.now() - startTime) / 1000);
  timerElement.textContent = `已运行: ${elapsed} 秒`;
}, 1000);

实现倒计时功能

修改计时逻辑实现倒计时功能。

let countdown = 60; // 60秒倒计时
const timerElement = document.getElementById('timer');

const timer = setInterval(() => {
  countdown--;
  timerElement.textContent = `剩余时间: ${countdown} 秒`;
  if (countdown <= 0) clearInterval(timer);
}, 1000);

标签: 功能js
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

前端vue登录功能实现

前端vue登录功能实现

登录功能实现步骤 在Vue中实现登录功能通常需要结合后端API,以下是关键步骤和代码示例: 创建登录表单组件 <template> <div> <form…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…