当前位置:首页 > JavaScript

js实现计时功能

2026-03-01 04:49:02JavaScript

使用 setInterval 实现计时器

通过 setInterval 可以定期执行回调函数,适合实现计时功能。以下是一个简单的倒计时示例:

let seconds = 60;
const timer = setInterval(() => {
  console.log(`剩余时间: ${seconds}秒`);
  seconds--;
  if (seconds < 0) {
    clearInterval(timer);
    console.log("计时结束");
  }
}, 1000);

使用 setTimeout 递归实现计时器

setTimeout 递归调用可以避免 setInterval 的潜在误差问题,适合高精度计时:

let seconds = 60;
function countdown() {
  console.log(`剩余时间: ${seconds}秒`);
  seconds--;
  if (seconds >= 0) {
    setTimeout(countdown, 1000);
  } else {
    console.log("计时结束");
  }
}
countdown();

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

性能优化的 requestAnimationFrame

对于需要高频率更新的计时场景(如动画),可以使用 requestAnimationFrame

let startTime = performance.now();
function updateFrame(timestamp) {
  const elapsed = (timestamp - startTime) / 1000;
  console.log(`精确耗时: ${elapsed.toFixed(2)}秒`);
  requestAnimationFrame(updateFrame);
}
requestAnimationFrame(updateFrame);

暂停与恢复计时功能

通过记录暂停时的剩余时间,可以实现计时器的暂停与恢复:

let remaining = 60;
let timer;
function startTimer() {
  timer = setInterval(() => {
    console.log(`剩余: ${remaining}秒`);
    remaining--;
    if (remaining < 0) clearInterval(timer);
  }, 1000);
}
function pauseTimer() {
  clearInterval(timer);
}
startTimer();
// 调用 pauseTimer() 可暂停

格式化时间显示

将秒数转换为 HH:MM:SS 格式:

js实现计时功能

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

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

相关文章

vue实现ping功能

vue实现ping功能

实现Ping功能的思路 在Vue中实现Ping功能通常需要借助浏览器API或后端服务。由于浏览器环境限制,无法直接发送ICMP请求(传统Ping协议),但可通过以下两种方式模拟: HTTP请求模拟P…

js实现全选

js实现全选

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

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

vue电影功能实现

vue电影功能实现

Vue 电影功能实现 数据获取与展示 使用 Axios 或 Fetch API 从电影 API(如 TMDb、豆瓣 API)获取数据。在 Vue 的 created 或 mounted 生命周期钩子中…

vue实现收货功能

vue实现收货功能

实现收货功能的基本思路 在Vue中实现收货功能通常涉及前端界面交互、后端API调用以及状态管理。以下是关键步骤和代码示例: 页面布局与数据绑定 使用Vue的模板语法构建收货表单,包含收货人、联系方式…