Javascript 在计时器中以两位数字显示小时、分钟和秒

Javascript 在计时器中以两位数字显示小时、分钟和秒,javascript,timer,Javascript,Timer,我使用javascript在我的网站上用以下代码显示所用的总时间 它工作正常……但问题是,当秒=0时,它的字段为空,当秒和分钟在1到9之间时,它显示一位数字 if 59 seconds then == 00:00:59 (curretnly showing 59) if 62 seconds then == 00:01:02 (currently showing 1:2) if 70 seconds then == 00:01:10 (currently showing 1:10) if 364

我使用javascript在我的网站上用以下代码显示所用的总时间

它工作正常……但问题是,当秒=0时,它的字段为空,当秒和分钟在1到9之间时,它显示一位数字

if 59 seconds then == 00:00:59 (curretnly showing 59)
if 62 seconds then == 00:01:02 (currently showing 1:2)
if 70 seconds then == 00:01:10 (currently showing 1:10)
if 3640 seconds then == 01:00:40 (currently showing 1:0:40) 
我的意思是显示的字段应该用

00:00:00(hh:mm:ss)

格式

javascript代码使用如下方式:

var timeStamp = Date.now(),
sessionStamp = sessionStorage.getItem('ts'),
elapsedTime;
  if (!sessionStamp) {
    sessionStorage.setItem('ts', timeStamp.toString());
    sessionStamp = timeStamp;
  } else {
    sessionStamp = parseInt(sessionStamp);
  }

function increment() {
    elapsedTime = Date.now() - sessionStamp;
    d1= Math.round(elapsedTime / 1000).toString();
    d = Number(d1);
    var h = Math.floor(d / 3600);
    var m = Math.floor(d % 3600 / 60);
    var s = Math.floor(d % 3600 % 60);

    var hDisplay = h > 0 ? h + (h == 1 ? ":" : ":") : "";
    var mDisplay = m > 0 ? m + (m == 1 ? ":" : ":") : "";
    var sDisplay = s > 0 ? s + (s == 1 ? "0" : "") : "";

    document.getElementById('elapsedTime').textContent = hDisplay + mDisplay + sDisplay; 
 }
    setInterval(increment, 1000);

我已经更新了JS小提琴

这就是我所改变的

var hDisplay = h > 0 ? (h < 10 ? "0" + h + ":" : h + ":") : "00:";
var mDisplay = m > 0 ? (m < 10 ? "0" + m + ":" : m + ":") : "00:";
var sDisplay = s > 0 ? (s < 10 ? "0" + s : s) : "00";
var hDisplay=h>0?(h<10?“0”+h+”:“:h+”:”:“00;”;
变量mDisplay=m>0?(m<10?“0”+m+”:“:m+”:”:“00;”;
var sDisplay=s>0?(s<10?“0”+s:s):“00”;

我已经更新了JS小提琴

这就是我所改变的

var hDisplay = h > 0 ? (h < 10 ? "0" + h + ":" : h + ":") : "00:";
var mDisplay = m > 0 ? (m < 10 ? "0" + m + ":" : m + ":") : "00:";
var sDisplay = s > 0 ? (s < 10 ? "0" + s : s) : "00";
var hDisplay=h>0?(h<10?“0”+h+”:“:h+”:”:“00;”;
变量mDisplay=m>0?(m<10?“0”+m+”:“:m+”:”:“00;”;
var sDisplay=s>0?(s<10?“0”+s:s):“00”;

您只需稍微改变小时、分钟和秒的格式即可

我在这里举了你的例子:

var timeStamp=Date.now(),
sessionStamp=sessionStorage.getItem('ts'),
拖延时间;
如果(!sessionStamp){
setItem('ts',timeStamp.toString());
sessionStamp=时间戳;
}
否则{
sessionStamp=parseInt(sessionStamp);
}
函数增量(){
elapsedTime=Date.now()-sessionStamp;
d1=Math.round(elapsedTime/1000).toString();
d=数量(d1);
var h=数学楼层(d/3600);
var m=数学下限(d%3600/60);
var s=数学下限(d%3600%60);
var hDisplay=h>0?(h<10?“0”:“)+h+:”:“00;”;
变量mDisplay=m>0?(m<10?“0”:“)+m+:”:“00;”;
变量sDisplay=s>0?(s<10?:“)+s:“00”;
document.getElementById('elapsedTime')。textContent=hDisplay+mDisplay+sDisplay;
}
设置间隔(增量,1000);
检查秒数是否大于0是正确的,但如果秒数与所需的“00”一致,则打印的是空字符串


您可以将小时、分钟和秒的逻辑分离为单独的函数,以便更容易理解

您只需要稍微不同地设置小时、分钟和秒的格式

我在这里举了你的例子:

var timeStamp=Date.now(),
sessionStamp=sessionStorage.getItem('ts'),
拖延时间;
如果(!sessionStamp){
setItem('ts',timeStamp.toString());
sessionStamp=时间戳;
}
否则{
sessionStamp=parseInt(sessionStamp);
}
函数增量(){
elapsedTime=Date.now()-sessionStamp;
d1=Math.round(elapsedTime/1000).toString();
d=数量(d1);
var h=数学楼层(d/3600);
var m=数学下限(d%3600/60);
var s=数学下限(d%3600%60);
var hDisplay=h>0?(h<10?“0”:“)+h+:”:“00;”;
变量mDisplay=m>0?(m<10?“0”:“)+m+:”:“00;”;
变量sDisplay=s>0?(s<10?:“)+s:“00”;
document.getElementById('elapsedTime')。textContent=hDisplay+mDisplay+sDisplay;
}
设置间隔(增量,1000);
检查秒数是否大于0是正确的,但如果秒数与所需的“00”一致,则打印的是空字符串


您可以将小时、分钟和秒的逻辑分离为单独的函数,以便更容易理解这是我自己的诀窍简单时尚

var hDisplay = (h < 0 ? "00" : ("0"+h).slice(-2)) + ":";
//And others ...
var hDisplay=(h<0?.00):(“0”+h).slice(-2))+“:”;
//和其他人。。。

这是我自己的把戏简单时尚

var hDisplay = (h < 0 ? "00" : ("0"+h).slice(-2)) + ":";
//And others ...
var hDisplay=(h<0?.00):(“0”+h).slice(-2))+“:”;
//和其他人。。。

按我的需要完美地工作。。。但我很抱歉,因为cdoshi早些时候发布了答案,我尝试了它,并且工作了,我将它标记为接受答案……然后我看到了您的答案……再次抱歉,谢谢您的帮助,没问题。很高兴你得到了我需要的答案。。。但我很抱歉,因为cdoshi早些时候发布了答案,我尝试了它,并且工作了,我将它标记为接受答案……然后我看到了您的答案……再次抱歉,谢谢您的帮助,没问题。很高兴你得到了答复很高兴能帮上忙!很高兴能帮上忙!