Jam randik SpeedCubing dalam JS
P粉014293738
P粉014293738 2023-09-14 09:13:21
0
1
601

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

membalas semua(1)
P粉762730205

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";
     }
})
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!