Rumah  >  Soal Jawab  >  teks badan

Jam randik SpeedCubing dalam JS

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粉014293738P粉014293738376 hari yang lalu576

membalas semua(1)saya akan balas

  • P粉762730205

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

    balas
    0
  • Batalbalas