Javascript 在运行的秒表中显示时间格式
我正在制作秒表,出于美学原因,我希望输出显示:00:00:00:000。问题是,当我的秒表运行时,我很难将它调到0,除非前面的值小于10Javascript 在运行的秒表中显示时间格式,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
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))进行比较时