当前位置:首页 > JavaScript

js实现计时功能

2026-01-30 13:43:50JavaScript

使用 setInterval 实现计时器

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

let seconds = 0;
const timer = setInterval(() => {
  seconds++;
  console.log(`已计时: ${seconds}秒`);
}, 1000);

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

使用 setTimeout 实现单次延迟

setTimeout 适用于单次延迟执行,可通过递归实现循环计时。

let count = 0;
function startTimer() {
  setTimeout(() => {
    count++;
    console.log(`计数: ${count}`);
    startTimer(); // 递归调用
  }, 1000);
}
startTimer();

使用 Date 对象计算精确时间差

通过记录开始时间戳,实时计算已过去的时间,适合高精度需求。

const startTime = new Date().getTime();
function updateElapsedTime() {
  const currentTime = new Date().getTime();
  const elapsed = Math.floor((currentTime - startTime) / 1000);
  console.log(`已过去: ${elapsed}秒`);
  setTimeout(updateElapsedTime, 1000);
}
updateElapsedTime();

使用 performance.now() 获取高精度时间

适合需要毫秒级精度的场景,如性能测试。

const start = performance.now();
function checkTime() {
  const duration = (performance.now() - start).toFixed(2);
  console.log(`耗时: ${duration}毫秒`);
  requestAnimationFrame(checkTime); // 使用动画帧避免阻塞
}
checkTime();

封装为可复用计时器类

将功能封装为类,便于控制和管理。

class Timer {
  constructor() {
    this.seconds = 0;
    this.timerId = null;
  }

  start() {
    this.timerId = setInterval(() => {
      this.seconds++;
      console.log(this.seconds);
    }, 1000);
  }

  stop() {
    clearInterval(this.timerId);
  }
}

const myTimer = new Timer();
myTimer.start();
// myTimer.stop();

页面显示实时计时

结合DOM操作实现可视化计时器。

js实现计时功能

<div id="display">0</div>
<button id="start">开始</button>
<button id="stop">停止</button>

<script>
  let timer;
  let seconds = 0;
  document.getElementById('start').addEventListener('click', () => {
    timer = setInterval(() => {
      seconds++;
      document.getElementById('display').textContent = seconds;
    }, 1000);
  });
  document.getElementById('stop').addEventListener('click', () => {
    clearInterval(timer);
  });
</script>

注意事项

  • setInterval 可能因主线程阻塞导致延迟,长时间运行需考虑误差累积。
  • 使用 requestAnimationFrame 可实现更平滑的动画计时。
  • 清除计时器时务必调用 clearIntervalclearTimeout,避免内存泄漏。

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

相关文章

vue实现分页功能

vue实现分页功能

Vue 分页功能实现 在 Vue 中实现分页功能通常需要结合后端 API 或前端数据分页逻辑。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,直接在 Vue 组件中处理分页逻辑。…

vue的艾特功能实现

vue的艾特功能实现

Vue 中的 @ 功能实现 Vue 中的 @ 符号是 v-on 指令的简写,用于绑定事件监听器。以下是具体实现方式: 基本语法 <button @click="handleClick">…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…