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

Temporizador não retorna ao valor original após novo CLICK

Já vi e revi várias vezes, ainda não encontrei o problema. Help!

console.log("Olá mundo");
var tempoInicial = $("tempo-digitacao").text();

$(document).ready(function(){  //Carrega previamente todas as funções da página ***
    atualizaTamanhoFrase();
    inicializaContadores();
    inicializaCronometro();
// *** Atalho para ready: também use assim:
//$(function(){
// --suas funções--
//});


    //    $("#botao-reiniciar").on("click",function(){
    //    console.log("botao clicadão!");
    //    });    OU:
    $("#botao-reiniciar").click(reiniciaJogo); 
    console.log("Funções carregadas!");
});

function atualizaTamanhoFrase(){
    var frase = $(".frase").text();  //CLASSE//Ao invés de digitar jQuery, digite $. jQuery(".frase"); = $(".frase");
    var numPalavras = frase.split(" ").length; //  
    //Quebra a frase em pedaços através dos espaços NOTA: para contar letras, deixe sem espaço entre os "".  Para contar palavras, coloque 1 espaço entre " "
    //var tamanhoFrase = $("#tamanho-frase").text(); // # = seletor de ID do HTML + o conteúdo TEXTUAL
    //console.log(tamanhoFrase);
    var tamanhoFrase = $("#tamanho-frase"); //Tirei o conteúdo para colocar abaixo:
    tamanhoFrase.text(numPalavras); //Coloca a quantidade de palavras no ID tamanho-frase do HTML
    console.log(numPalavras); }

var campo = $(".campo-digitacao");
console.log(campo);

function inicializaContadores(){
    campo.on("input",function(){ // .ON recebe 2 parâmetros: tipo de entrada/escuta e função
             //CLICK: quando o CAMPO sofrer um click, faça algo (ON é do jQuery)  OU
            // INPUT: quando o CAMPO estiver sendo inputado (digitado), faça algo

        //console.log("cliquei no campo de digitacao");
        //Agora devemos contar o que tem dentro do campo
        campo.val();  //acessa o value do campo pelo jQuery
        console.log(campo.val()); //teste
        var conteudo = campo.val(); //armazena o valor do campo (as frases)
        // val é sempre onde o usuário pode escrever
        //conta as palavras do CAMPO
        var qtdPalavras = conteudo.split(/\s+/).length;  //  /\s+/  -->Conta QUALQUER espaço vazio, assim a contagem fica correta
        console.log(qtdPalavras);
        $("#contador-palavras").text(qtdPalavras);
        console.log(conteudo.length); //conta as letras incluindo espaços
        var qtdCaracteres = conteudo.length;
        $("#contador-caracteres").text(qtdCaracteres);
    }); }

function inicializaCronometro(){
    var tempoRestante = $("#tempo-digitacao").text();
    campo.one("focus",function(){ //A caixa de texto está em "FOCO" uma única vez (ONE ao invés de ON, que fica direto)
        console.log("Digitando...");
        console.log(tempoRestante);
        var cronometroID = setInterval(function(){ //ID é o retorno de setInterval
                tempoRestante--;
                console.log(tempoRestante);
                $("#tempo-digitacao").text(tempoRestante);
                if (tempoRestante<1){
                    campo.attr("disabled",true);  //ATTR = atributo de um elemento
                    clearInterval(cronometroID);  //cancela o INTERVAL se tempo=0
                }
            },1000);  //SetInterval é JS puro.  Função a desenvolver e tempo em ms.
    });}

function reiniciaJogo(){
    console.log("botao clicadão com click(function()!");
    campo.attr("disabled",false);  //Reabilita o campo para escrever
    campo.val("");  //apaga a digitação anterior para reiniciar com campo limpo
    $("#contador-palavras").text("0");
    $("#contador-caracteres").text("0");
    $("#tempo-digitacao").text(tempoInicial); //Insere o tempo original inicial
    inicializaCronometro(); }
1 resposta
solução!

Problema resolvido. Faltou o # para chamar o ID tempo-digitacao. Incrível como pequenos detalhes fazem enorme diferença no tempo de montagem.

var tempoInicial = $("#tempo-digitacao").text();