Javascript - 基本秒表可以多次启动,提高手表速度。解决方案?
Javascript - Basic stopwatch can be started multiple times, increasing the watch speed. Solutions?
这是我们的 JS 代码(基本上是从其他地方复制粘贴的),它或多或少可以工作,但是我们有一个问题,如果用户单击 "start" 按钮的速度是每按一次按钮,手表就会增加。
var h1 = document.getElementsByTagName('h1')[0],
start = document.getElementById('start'),
stop = document.getElementById('stop'),
clear = document.getElementById('clear'),
seconds = 0, minutes = 0,
t;
function add() {
seconds++;
if (seconds >= 60) {
seconds = 0;
minutes++;
}
h1.textContent = (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":" + (seconds > 9 ? seconds : "0" + seconds);
timer();
}
function timer() {
t = setTimeout(add, 997.5);
}
/* Start button */
document.getElementById("start").onclick = timer;
/* Stop button */
document.getElementById("stop").onclick = function () {
clearTimeout(t);
}
/* Clear button */
document.getElementById("clear").onclick = function () {
h1.textContent = "00:00";
seconds = 0; minutes = 0;
clearTimeout(t);
}
是的,任何输入都很棒。我试着让停止功能("clearTimeout(t)")从定时器功能开始,只是想看看它是否会在它开始之前重置它,但它没有用。
有什么想法吗?你可能会说我是新手。
我的建议是在每次启动时检查秒表是否启动。要么取消当前的,开始新的:
function timer() {
if (t) {
clearTimeout(t);
}
t = setTimeout(add, 997.5);
}
或者如果已经启动则什么也不做:
function timer() {
if (!t) {
t = setTimeout(add, 997.5);
}
}
document.getElementById("stop").onclick = function () {
clearTimeout(t);
t = null;
}
这是我们的 JS 代码(基本上是从其他地方复制粘贴的),它或多或少可以工作,但是我们有一个问题,如果用户单击 "start" 按钮的速度是每按一次按钮,手表就会增加。
var h1 = document.getElementsByTagName('h1')[0],
start = document.getElementById('start'),
stop = document.getElementById('stop'),
clear = document.getElementById('clear'),
seconds = 0, minutes = 0,
t;
function add() {
seconds++;
if (seconds >= 60) {
seconds = 0;
minutes++;
}
h1.textContent = (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":" + (seconds > 9 ? seconds : "0" + seconds);
timer();
}
function timer() {
t = setTimeout(add, 997.5);
}
/* Start button */
document.getElementById("start").onclick = timer;
/* Stop button */
document.getElementById("stop").onclick = function () {
clearTimeout(t);
}
/* Clear button */
document.getElementById("clear").onclick = function () {
h1.textContent = "00:00";
seconds = 0; minutes = 0;
clearTimeout(t);
}
是的,任何输入都很棒。我试着让停止功能("clearTimeout(t)")从定时器功能开始,只是想看看它是否会在它开始之前重置它,但它没有用。
有什么想法吗?你可能会说我是新手。
我的建议是在每次启动时检查秒表是否启动。要么取消当前的,开始新的:
function timer() {
if (t) {
clearTimeout(t);
}
t = setTimeout(add, 997.5);
}
或者如果已经启动则什么也不做:
function timer() {
if (!t) {
t = setTimeout(add, 997.5);
}
}
document.getElementById("stop").onclick = function () {
clearTimeout(t);
t = null;
}