Javascript 在运行的秒表中显示时间格式

Javascript 在运行的秒表中显示时间格式,javascript,Javascript,我正在制作秒表,出于美学原因,我希望输出显示:00:00:00:000。问题是,当我的秒表运行时,我很难将它调到0,除非前面的值小于10 window.addEventListener('load', function() { var display = document.getElementById('display-area'); var toggle = document.getElementById('toggle-button'); var reset = document.getE

我正在制作秒表,出于美学原因,我希望输出显示:00:00:00:000。问题是,当我的秒表运行时,我很难将它调到0,除非前面的值小于10

window.addEventListener('load', function() {

var display = document.getElementById('display-area');
var toggle = document.getElementById('toggle-button');
var reset = document.getElementById('reset-button');

var ms,
  difference,
  interval,
  hours,
  minutes,
  seconds,
  timer = 0;

function start() {
  difference = Date.now();
  interval = window.setInterval(update, 10);
  timer = 1;
};

function stopp() {
  window.clearInterval(interval);
  timer = 0;
};

function nullstill() {
ms = 0;
seconds = 0;
minutes = 0;
hours = 0;
display.value = '00:00:00:000';
};

function update() {
ms += elapsedTime();
if (ms >= 1000) {
  seconds += 1;
  ms = 0;
}
if (seconds >= 60) {
  minutes += 1;
  seconds = 0;
}
if (minutes >= 60) {
    hours += 1;
    minutes = 0;
}

display.value = hours + ':' + minutes +':' + seconds +':'+ ms;
};

function elapsedTime() {
var now = Date.now();
elapsed = now - difference;
difference = now;
return elapsed;
};

nullstill();

toggle.addEventListener('click', function() {
console.log(timer);
if (timer != 1) {
  start();
} else {
  stopp();
}
});

reset.addEventListener('click', function() {
nullstill();
});

});
我如何让它工作


在这方面,

整数永远不会在数字前面包含0。这是一个相当容易的解决方案。您只需要使用一些字符串连接

display.value=(小时<10?“0”+小时:小时)+:“+(分钟<10?“0”+分钟:分钟)+:”+(秒<10?“0”+秒:秒)+:“+ms

我使用的语法称为三元运算符。这里有一点关于它是如何工作的。基本上,它是一个简化的if语句,可以内联使用


(条件{如果为true,运行此}:{否则,运行此})

当值小于10时,需要字符串连接。我将为小时、分钟和秒创建三个单独的变量。这样代码就更清晰易读了

var displayHours = (hours >= 10) ? hours : "0" + hours;
var displayMins = (minutes >= 10) ? minutes : "0" + minutes;
var displaySeconds = (seconds >= 10) ? seconds : "0" + seconds;

display.value = displayHours + displayMins + displaySeconds + ":" + ms;

下面是一个有用的小示例,它向您展示了在Javascript中向数字添加前导零的便捷方法。如果你有一个像53这样的数字,并且想要6个数字位(例如56的情况下有4个前导零),你只需添加
(1e6+53+“”)。切片(-6)
,这将给你
000053
,因为1e6表示1后面有6个零,在这种情况下,带负数的切片从末尾开始,并切掉6个位置,所以100000053变成000053

hours=0,minutes=1,seconds=20,ms=7;
document.getElementById('t')。innerHTML=
(1e2+hours+'')。切片(-2)+':'+
(1e2+分钟+'')。切片(-2)+':'+
(1e2+秒+'')。切片(-2)+':'+
(1e3+ms+“”)。切片(-3)

你的其余代码在哪里?现在发布了整个JS代码。HTML只包含两个按钮和一个输出。谢谢!尝试了类似的方法,但我猜我没有正确使用它。我会避免使用长线,并将其分解为单独的变量。我想那样看起来会更干净。否则,很好的答案这是一个非常酷的答案,谢谢分享。我以前在JS中从未见过这种情况。如果数字为0,这也可以解释。太棒了。@jbman223一开始似乎有点不正统,但当你将它与典型的(((x))进行比较时