我想这样保留空白:[[1小时2 m 3 s][[11 h 22 m 33 s]我希望'h','m'和's'每次更新值时都保持在同一位置(在我的代码中,我以1s为间隔)。在这种情况下,我希望它保留2个字符长的数值。这是我的问题:[[1 h 2 m 3 s](问题)其宽度随着总字符的变化而变化。[[1小时2 m 3 s](我希望的样子)
在C中,在这种情况下,我可以使用以下方法轻松解决问题:
printf("%2d h %2d m %2d s", h, m, s);
与JavaScript不同,我在互联网上找不到解决方案。顺便说一句,这是我的代码:
var s = 0;
setInterval(() => {
timer.innerHTML = s < 60 ? (s % 60) + ' s' :
s < 3600 ? Math.floor(s / 60) % 60 + ' m ' + (s % 60) + ' s' :
Math.floor(s / 3600) + ' h ' + Math.floor(s / 60) % 60 + ' m ' + (s % 60) + ' s';
s++;
}, 1000);
从评论中收到一些提示后,我想到的最终解决方案是:
var s = 0;
setInterval(() => {
let sec = (s % 60).toString().padStart(2);
let min = (Math.floor(s / 60) % 60).toString().padStart(2);
let hour = Math.floor(s / 3600).toString().padStart(2);
timer.innerHTML = s < 60 ? `${sec}s` :
s < 3600 ? `${min}m ${sec}s` :
`${hour}h ${min}m ${sec}s`;
s++;
}, 1000);