纯JS(Vanilla.js)倒计时传入大秒数仅显示后两位秒数问题求解
问题原因
问题由两个代码错误共同导致:
- 单位不匹配:
new Date().getTime()返回的是毫秒级时间戳,你传入refillTimer的theTime是秒单位,直接相加相当于把输入的秒数当成毫秒数计算:37000秒输入会被当成37000毫秒(即37秒),43650秒输入会被当成43650毫秒(约43秒),这是倒计时总时长不符合预期的核心原因。 - 格式化规则错误:当前用
event.strftime('<strong>%S</strong>')仅提取了倒计时剩余时间的秒数部分,就算总时长正确,也不会展示小时、分钟部分,不符合你要的HH:MM:SS格式需求。
解决方案
只需修改refillTimer函数的两处逻辑即可:
// 修复后的倒计时函数 function refillTimer(theTime) { // 1. 秒转毫秒,乘以1000匹配时间戳单位 var timer = new Date().getTime() + theTime * 1000; $('#refillTimer').countdown(timer).on('update.countdown', function(event) { $(this).show(); var $this = $(this); if(event.elapsed){ $this.html(event.strftime('0:0:0')); }else{ // 2. 修改格式化字符串,输出时分秒完整格式 $this.html(event.strftime('<strong>%H:%M:%S</strong>')); } }).on('finish.countdown', function(){ $(this).hide(); }); }
注:%H为24小时制补零格式、%M为分钟补零格式、%S为秒补零格式,刚好符合你需要的HH:MM:SS展示需求。
内容的提问来源于stack exchange,提问作者Relaxing Music
相关产品推荐
相关产品推荐

