Heim  >  Fragen und Antworten  >  Hauptteil

SpeedCubing Stoppuhr in JS

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粉014293738P粉014293738425 Tage vor603

Antworte allen(1)Ich werde antworten

  • P粉762730205

    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";
         }
    })

    Antwort
    0
  • StornierenAntwort