Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

O alert continuou mesmo após aplicar a função zerar

Fiz assim como o professor disse no vídeo e criei a função zerar() abaixo da variável contagemRegressiva e da função iniciarOuPausar(), porém não adiantou chamar a função zerar() dentro da contagemRegressiva, o navegador seguiu chamando o alert sem parar.

A solução que encontrei foi mudar a posição da função zerar() e colocá-la acima da variável contagemRegressiva. Assim a função zerar() chamada pelo if() na variável contagemRegressiva funcionou e o alert foi mostrado apenas uma vez como deveria.

O código então ficou na seguinte ordem:

function zerar() {
    clearInterval(intervaloId);
    intervaloId = null;
}

const contagemRegressiva = () => {
    if(tempoDecorridoEmSegundos <= 0) {
        zerar();
        alert("Tempo finalizado!");
        return;
    }
    tempoDecorridoEmSegundos -= 1;
}

startPauseBt.addEventListener("click", iniciarOuPausar);

function iniciarOuPausar() {
    if(intervaloId) {
        zerar();
        return;
    }
    intervaloId = setInterval(contagemRegressiva, 1000);
}
1 resposta
solução!

Olá, Diogo, tudo bem?

Fico feliz que tenha encontrado uma solução para o problema que estava enfrentando. Espero que tenha sido tranquila!

No JavaScript, o código, é interpretado de cima para baixo. Isso significa que a ordem na qual você declara funções e variáveis importa, especialmente quando essas funções e variáveis dependem umas das outras. Ao mover a função zerar() para cima, antes de sua utilização na função atribuída à variável contagemRegressiva, você garantiu que ela fosse declarada (e, portanto, existisse no escopo) no momento em que fosse chamada. Contudo, devido ao comportamento de hoisting, onde as declarações de funções e variáveis são "içadas" para o topo do seu escopo antes da execução do código, esse problema deveria ser evitado.

Para conseguir identificar com precisão o motivo do problema que você teve, seria interessante que você compartilhasse o seu projeto completo via GitHub ou Google Drive. Lembre-se que, se enviar os arquivos por meio do Google Drive, é necessário conceder permissão para que eu possa ter acesso.

Reforço que fico feliz que você tenha encontrado uma solução e compartilhado com as demais pessoas estudantes. Caso tenha dúvidas, conte com o fórum para te ajudar!

Abraços e bons estudos!