Rumah > Soal Jawab > teks badan
Pemasa terbina dalam dalam blok kod. Sekarang pemasa bermula/berhenti melalui butang, tetapi saya memerlukannya untuk dijalankan apabila butang ruang dilepaskan, dan saya memerlukannya untuk berhenti apabila butang ruang ditekan. Saya telah cuba menyelesaikan masalah ini selama kira-kira dua hari sekarang dan sepertinya tidak dapat mencari penyelesaian. Setiap kali saya cuba menghentikan pemasa, apabila saya melepaskan butang ruang, pemasa bermula semula.
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); }
Saya cuba menambah pendengar acara dan menambah syarat tetapi tiada yang berjaya, apabila pemasa berhenti ia sentiasa bermula semula apabila saya melepaskan butang ruang.
P粉7627302052023-09-15 00:51:03
Saya menemui penyelesaiannya dan saya perlu memberi sedikit penghargaan kepada Andre yang membantu saya memikirkan perkara ini.
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"; } })