当前位置:首页 > 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实现账号注册功能

vue实现账号注册功能

实现账号注册功能 在Vue中实现账号注册功能通常需要结合前端表单和后端API交互。以下是一个完整的实现方案: 创建注册表单组件 新建一个Register.vue组件,包含基本的注册表单字段: &l…

vue实现产品使用功能

vue实现产品使用功能

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

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

uniapp实现选项卡功能

uniapp实现选项卡功能

实现选项卡功能的基本方法 在uniapp中实现选项卡功能通常需要使用uni-segmented-control组件或自定义样式结合swiper组件。以下是两种常见实现方式: 使用uni-se…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…