Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se
0
respostas

Botão Reiniciar não interrompe a contagem antiga.

Passei algumas horas quebrando a cabeça tentando resolver esse problema, quando clico no botão para reiniciar o jogo/contagem(botão New Game), ele apenas pisca com o tempo inicial e logo continua a primeira contagem, se clicar mais vezes no botão ele abre outras contagens e fica um looping de vários números até a primeira contagem chegar a zero. Já vi outros tópicos aqui com o mesmo problema mas nenhuma solução...

HTML

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Words Per Second</title>
</head>
<body>
    <h1>Words Per Second</h1>
    <p class="frase">The amber droplet hung from the branch, reaching fullness and ready to drop. It waited. While many of the other droplets were satisfied to form as big as they could and release, this droplet had other plans.</p>

    <ul class="informacoes">
        <li><span id="tamanho-frase"></span> words</li>
        <li id="segundos-tempo-digitacao"><span id="tempo-digitacao"></span> seconds</li>
    </ul>

    <textarea class="campo-digitacao" rows="8" cols="40"></textarea>

    <ul>
        <li><span id="contador-caracteres"></span> characters</li>
        <li><span id="contador-palavras"></span> words</li>
    </ul>

    <button id="botao-reiniciar">New Game</button>

    <script src="js/jquery.js"></script>
    <script src="js/main.js"></script>
    <script src="js/contadorTextArea.js"></script>

</body>
</html>

Jquery

$(document).ready(function(){
    inicializaCronometro('s')
    contadorInferior()
})




let frase = $(".frase").text();
let numeroPalavras = frase.split(" ").length;

let tamanhoDaFrase = $("#tamanho-frase");
tamanhoDaFrase.text(numeroPalavras)

let tempoRestante = $("#tempo-digitacao").text()
tempoRestante = numeroPalavras -(numeroPalavras/3)

let tempoInicial = tempoRestante



let botaoReiniciar = $("#botao-reiniciar")
botaoReiniciar.click(function(){

    botaoDeReiniciar()

})



//funções

function inicializaCronometro(){


    let campoTimer = $(".campo-digitacao")
    campoTimer.one("focus", function(){
        const intervalId = setInterval(function(){
            tempoRestante--
            $("#tempo-digitacao").text(Math.round(tempoRestante))
            if(tempoRestante <= 0){
                campoTimer.attr("disabled", true)
                clearInterval(intervalId)
                $("#tempo-digitacao").text(Math.round(tempoInicial)) 
            }
    },1000)
    })
}

function contadorInferior(){

    let campo = $(".campo-digitacao")
    campo.on("input", function(){
    let conteudo = campo.val()
    let qtdPalavras = conteudo.split(/\S+/).length -1  //expressão regular que busca por espaço vazios
    $("#contador-palavras").text(qtdPalavras)

    conteudo = conteudo.replace(/ /g,'')           //expressão regular que descontabiliza espaço vazios
    let qtdCaracteres = conteudo.length
    $("#contador-caracteres").text(qtdCaracteres)
})
}

function botaoDeReiniciar(){

    campoDigitacao.attr("disabled", false)
    campoDigitacao.val("")
    $("#contador-palavras").text("0")
    $("#contador-caracteres").text("0")
    $("#tempo-digitacao").text(Math.round(tempoInicial))
    inicializaCronometro()

}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software