SpeedCubing Stoppuhr in JS
P粉014293738
P粉014293738 2023-09-14 09:13:21
0
1
573

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粉014293738
P粉014293738

Antworte allen(1)
P粉762730205

我找到了解决方案,我需要给 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";
     }
})
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!