当前位置:首页 > 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 适用于单次延迟执行,可通过递归实现循环计时。

js实现计时功能

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() 获取高精度时间

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

js实现计时功能

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操作实现可视化计时器。

<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
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

vue实现产品使用功能

vue实现产品使用功能

Vue 实现产品功能的关键方法 组件化开发 使用Vue的单文件组件(.vue)将产品功能模块化,每个功能拆分为独立组件。例如产品列表、详情页、购物车等可分别封装为ProductList.vue、Pro…

js实现动画

js实现动画

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

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…