当前位置:首页 > JavaScript

js实现读秒

2026-02-01 05:11:59JavaScript

使用 setInterval 实现读秒

通过 setInterval 定时器实现倒计时功能,每隔 1 秒更新显示的数字。

let seconds = 10; // 初始秒数
const countdownElement = document.getElementById('countdown');

const timer = setInterval(() => {
  seconds--;
  countdownElement.textContent = seconds;

  if (seconds <= 0) {
    clearInterval(timer);
    countdownElement.textContent = '时间到!';
  }
}, 1000);

使用 setTimeout 递归实现读秒

通过递归调用 setTimeout 实现更精确的读秒控制,避免 setInterval 的潜在误差。

let seconds = 10;
const countdownElement = document.getElementById('countdown');

function updateCountdown() {
  seconds--;
  countdownElement.textContent = seconds;

  if (seconds > 0) {
    setTimeout(updateCountdown, 1000);
  } else {
    countdownElement.textContent = '时间到!';
  }
}

setTimeout(updateCountdown, 1000);

格式化显示时间(分钟:秒)

将秒数转换为 MM:SS 格式,适用于更长的倒计时场景。

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

let timeLeft = 125; // 2分5秒
const timerElement = document.getElementById('timer');

setInterval(() => {
  timeLeft--;
  timerElement.textContent = formatTime(timeLeft);
}, 1000);

暂停与继续功能

添加按钮控制读秒的暂停和继续功能。

<button id="pause">暂停</button>
<button id="resume">继续</button>
<div id="display">10</div>
let seconds = 10;
let timer;
const display = document.getElementById('display');
const pauseBtn = document.getElementById('pause');
const resumeBtn = document.getElementById('resume');

function startTimer() {
  timer = setInterval(() => {
    seconds--;
    display.textContent = seconds;
    if (seconds <= 0) clearInterval(timer);
  }, 1000);
}

pauseBtn.addEventListener('click', () => clearInterval(timer));
resumeBtn.addEventListener('click', startTimer);

startTimer(); // 初始启动

性能优化建议

对于长时间运行的读秒器,建议使用 Date 对象计算时间差,避免因主线程阻塞导致计时不准。

js实现读秒

let endTime = new Date().getTime() + 10000; // 10秒后结束

function update() {
  const now = new Date().getTime();
  const remaining = Math.max(0, Math.floor((endTime - now) / 1000));
  document.getElementById('optimized').textContent = remaining;

  if (remaining > 0) {
    requestAnimationFrame(update);
  }
}

update();

标签: js
分享给朋友:

相关文章

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js实现删除

js实现删除

使用 splice 方法删除数组元素 splice 方法可以删除数组中的元素,并返回被删除的元素。它接受两个参数:起始索引和要删除的元素数量。 const array = [1, 2, 3, 4…

js实现图片移动

js实现图片移动

使用CSS和JavaScript实现图片移动 方法一:使用CSS动画结合JavaScript控制 通过CSS定义动画关键帧,JavaScript动态添加或移除动画类。 /* CSS部分 */ .m…

js实现上传图片预览

js实现上传图片预览

使用FileReader实现图片预览 通过FileReader对象读取用户选择的图片文件,并将其显示在页面上。这种方法适用于现代浏览器。 // HTML部分 <input type="file…