1
resposta

A função de zerar o temporizador não funciona (site Fokus-projeto)

Quando a contagem chega no final ela não zera e reinicia, continua sempre dando o alerta 'tempo finalizado', não consegui solucionar gostaria de saber o porque ? Tentei colocar a função "zerar" antes da função "contagem regressiva" como indicaram, mas continuou o mesmo erro

Estou trabalhando com Vscode - no Windows

https://github.com/Rogeriobrando/Alura/tree/main/Javascript/Elementos%20no%20Dom/Fokus-projeto-base

1 resposta

Boa noite Rogério, eu fiz umas pequenas modificações aqui pra funcionar.

Primeiro eu coloquei os tempos em uma constante para poder reutilizar elas e criei uma variável que vai me informa qual o tempo que está sendo utilizado, jaja você vai entender o motivo.

const tempo = {
    foco: 1500,
    curto: 300,
    longo: 900,
}
let tempoSelecionado = 'foco'; // <-- tempo sendo utilizado

// agora informa assim os tempos
let tempoDecorridoEmSegundos = tempo.foco; 

focoBt.addEventListener('click' , () => {
    tempoDecorridoEmSegundos = tempo.foco;
    alterarContexto('foco');
    focoBt.classList.add('active');
})

curtoBt.addEventListener('click' , () => {
    tempoDecorridoEmSegundos = tempo.curto;
    alterarContexto('descanso-curto');
    curtoBt.classList.add('active');
})

longoBt.addEventListener('click' , () => {
    tempoDecorridoEmSegundos = tempo.longo;
    alterarContexto('descanso-longo');
    longoBt.classList.add('active');
})

Na função alterarContexto eu adicionei uma linha para informa qual time esta sendo utilizado:

function alterarContexto(contexto) {
    tempoSelecionado = contexto.split('-')[1] || contexto;
    ...
}

Depois eu adicionei modifiquei a função zerar e aqui que eu utilizo a var que informa qual tempo esta sendo usado:

function zerar() {
    tempoDecorridoEmSegundos = tempo[tempoSelecionado]; 
    mostrarTempo()
    clearInterval(intervaloId);
    iniciarOuPausarBt.textContent = "Começar";
    simboloPause.setAttribute('src', `./imagens/play_arrow.png`)
    intervaloId = null;
}

Pronto problema resolvido, o problema ocorria pois quando chegava na função contagemRegressiva, como o tempo não era setado nomavemente, ele entrava no loop infinito.