电话
400 9058 355
倒计时组件通过计算当前时间与目标时间的差值,实时更新页面显示。1. 设定目标时间并获取当前时间戳;2. 计算时间差(毫秒),分解为天、时、分、秒;3. 使用setInterval每秒更新一次显示内容,并用padStart补零;4. 当倒计时归零时清除定时器并停止更新。HTML结构包含四个span分别展示天、时、分、秒,CSS可美化样式。该实现逻辑清晰,支持复用,适用于活动倒计时等场景。
实现一个简单的倒计时组件是JavaScript中常见的需求,比如用于活动倒计时、限时抢购等场景。下面是一个实用且结构清晰的倒计时组件实现方法,适合在网页中直接使用。
倒计时的核心是计算当前时间与目标时间之间的时间差,然后将这个差值分解为天、小时、分钟和秒,并实时更新页面显示。
关键步骤包括:
先定义一个简单的HTML容器来展示倒计时:
00天 00时 00分 00秒
下面是完整的JavaScript代码,封装成一个可复用的函数:
function startCountdown(endTime) {
const $ = id => document.getElementById(id);
const timer = setInterval(() => {
const now = new Date().getTime();
const distance = endTime - now;
if (distance <= 0) {
clearInterval(timer);
$("days").textContent = "00";
$("hours").textContent = "00";
$("minutes").textContent = "00";
$("seconds").textContent = "00";
return;
}
const days = Math.floor(distance / (1000 * 60 * 60 * 24));
const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 *
60));
const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((distance % (1000 * 60)) / 1000);
$("days").textContent = days.toString().padStart(2, '0');
$("hours").textContent = hours.toString().padStart(2, '0');
$("minutes").textContent = minutes.toString().padStart(2, '0');
$("seconds").textContent = seconds.toString().padStart(2, '0');}, 1000);
}
// 启动倒计时:设置目标时间为2025年10月1日
const targetDate = new Date("2025-10-01T00:00:00").getTime();
startCountdown(targetDate);
可以添加一些CSS让倒计时更醒目:
#countdown {
font-size: 24px;
font-weight: bold;
color: #d32f2f;
text-align: center;
margin: 20px 0;
}
#countdown span {
display: inline-block;
width: 40px;
background: #fff3e0;
border-radius: 4px;
padding: 5px;
margin: 0 4px;
}
基本上就这些。这个倒计时组件简单、易懂、可扩展。你可以把它封装成类或模块,支持自定义格式、回调函数(如结束时触发提醒),甚至支持暂停和重启功能。不复杂但容易忽略细节,比如时间格式兼容性和补零处理,这里都已涵盖。
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...