JavaScript时钟分钟与秒数超60未归零问题求助
修复JavaScript时钟的时分秒重置问题
我来帮你搞定这个计时问题!你的代码里计算分钟和秒数时没做取余处理,导致它们会一直累加而不重置到0。咱们直接修改代码,同时也把小时的24小时重置逻辑加上:
修改后的完整代码
JavaScript部分
function increment(){ if(running == 1){ setTimeout(function(){ Dtime++; // 计算从开始到现在的总秒数(Dtime每100ms加1,除以10转成秒单位) const totalSeconds = Math.floor(Dtime / 10); // 秒数:总秒数对60取余,得到0-59的循环数值 var secs = totalSeconds % 60; // 分钟数:总秒数转成总分钟后对60取余,实现0-59循环 var mins = Math.floor(totalSeconds / 60) % 60; // 小时数:总秒数转成小时,若需要24小时制则加%24 var hours = Math.floor(totalSeconds / 3600); // 👇 如果要实现24小时自动重置,替换成下面这行 // var hours = Math.floor(totalSeconds / 3600) % 24; // 补零逻辑保持不变,确保单数字时显示两位 if(hours <= 9){ hours = "0" + hours; } if(mins <= 9){ mins = "0" + mins; } if(secs <= 9){ secs = "0" + secs; } document.getElementById("outputt").innerHTML = `${hours}:${mins}:${secs}`; increment(); }, 100); } } var Dtime=0; var running = 1; increment();
HTML部分(无需修改)
<div id="outputt" class="timerClock" value="00:00:00">00:00:00</div>
关键修改说明
- 秒数计算:用
totalSeconds % 60,取余操作会让数值在0-59循环,到60自动变回0,同时进位给分钟。 - 分钟数计算:先把总秒数转成总分钟(
Math.floor(totalSeconds / 60)),再对60取余,这样分钟数也会在0-59循环,到60时重置为0并进位给小时。 - 小时数处理:如果需要24小时制,就给小时数加
%24,这样到24点时会自动重置为0;如果是累计计时(比如统计总时长),就保留原来的计算方式即可。
这样修改后,你的时钟就会完全按照时分秒的进制规则正常计数啦!
内容的提问来源于stack exchange,提问作者srcomptn
相关产品推荐
相关产品推荐

