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

uso do clearInterval

tentei o uso d clearInterval(), porém o meu "timer" continua mesmo após passa do 0

Insira aqui a descrição dessa imagem para ajudar na acessibilidadenão sei o que faço pra funcionar

1 resposta
solução!

Oi, Joedson, tudo bem?

Desculpe a demora em te responder!

A variável tempo, retorna um objeto jQuery que representa o elemento HTML tempo-digitacao. Quando a estrutura condicional tempo<1 é executada, o JavaScript tenta converter o objeto jQuery em um número para fazer a comparação. No entanto, como o objeto jQuery não pode ser convertido diretamente em um número, o resultado da comparação é NaN (not a number), considerado falso em uma expressão condicional, sendo assim, a condição tempo < 1 nunca é verdadeira e o cronômetro continua a contar mesmo quando o tempo restante é zero ou negativo. Podemos solucionar esse problema, reescrevendo a estrutura condicional e a variável tempo, de modo que o código seria escrito da seguinte maneira:

campo.one("focus", function() {
    var cronometroID = setInterval(function() {
        tempoRestante--;
        $("#tempo-digitacao").text(tempoRestante);
        if (tempoRestante < 1) {
            clearInterval(cronometroID);
        }
    }, 1000);
})

Perceba não haver necessidade de criar uma variável para abrigar o valor obtido na expressão $("#tempo-digitacao").text(tempoRestante) , pois nela exibimos apenas o valor que será mostrado na tela após o decréscimo do valor inicial. Além disso, também temos a reescrita da estrutura condicional que conta com o valor contido na variável tempoRestante, que retorna uma string com o valor do tempo adicionado na tag <span>. Esse valor em string pode ser convertido em um número, portanto, a condição será verdadeira e o valor não continuará decrescendo infinitamente.

Espero ter ajudado. Caso tenha dúvidas, estarei à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!