Heim > Fragen und Antworten > Hauptteil
Eingebauter Timer im Codeblock. Im Moment startet/stoppt der Timer über die Taste, aber ich möchte, dass er läuft, wenn die Leertaste losgelassen wird, und dass er stoppt, wenn die Leertaste gedrückt wird. Ich versuche nun schon seit etwa zwei Tagen, dieses Problem zu lösen, kann aber scheinbar keine Lösung finden. Jedes Mal, wenn ich versuche, den Timer zu stoppen, startet der Timer erneut, wenn ich die Leertaste loslasse.
let startDate; let timeoutID = 0; let time; let started = false; let timerRunOut = false; function start(){ if(!started){ startDate = new Date(); startTimer(); started = true; } } function stop(){ if(started){ clearTimeout(timeoutID); started = false; } } function startTimer () { let current = new Date(); time = (current - startDate); let timeMS = time; let ms = timeMS % 1000; timeMS = (timeMS - ms) / 1000; let seconds = timeMS % 60; timeMS = (timeMS - seconds) / 60; let mins = timeMS % 60; if(seconds < 10){ document.getElementById("seconds").innerText = "0" + seconds; }else{ document.getElementById("seconds").innerText = seconds; } if(mins > 0 && mins < 10){ document.getElementById("minutes").innerText = "0" + mins + ":"; }else if(mins > 0){ document.getElementById("minutes").innerText = mins + ":"; }else{ document.getElementById("minutes").innerText = ""; } if(ms < 10){ document.getElementById("tens").innerText = "00" + ms; } else if(ms < 100){ document.getElementById("tens").innerText = "0" + ms; }else{ document.getElementById("tens").innerText = ms; } timeoutID = setTimeout(startTimer, 0); }
Ich habe versucht, Ereignis-Listener und Bedingungen hinzuzufügen, aber nichts funktioniert. Wenn der Timer stoppt, startet er immer wieder, wenn ich die Leertaste loslasse.
P粉7627302052023-09-15 00:51:03
我找到了解决方案,我需要给 Andre 一点功劳,他帮助我解决了问题这个出来了。
let spaceUp = 0; function startHandler(event){ if(event.code === "Space" && spaceUp < 1){ start(); spaceUp ++; document.addEventListener("keydown", stopHandler); document.removeEventListener("keyup", startHandler); }else if(spaceUp == 1){ spaceUp = 0; } document.getElementById("timer").style.color = "black"; } function stopHandler(event){ if(event.code === "Space"){ stop(); document.removeEventListener("keydown", stopHandler); document.getElementById("timer").style.color = "red"; document.addEventListener("keyup", startHandler); } } document.addEventListener("keyup", startHandler); document.addEventListener("keydown", function(e){ if(e.code === "Space" && !started){ document.getElementById("timer").style.color = "green"; } })