2
respostas

Jquery Aula 4 atividade 1: Reiniciando o jogo.

O meu codigo está com um pequeno problema, tentei resolver mas não consegui, quando clico no botão para zerar o jogo, o contador retorna pra 10 mas no proximo segundo continua a contagem de onde parou, cada vez que clico no botão de zerar ele volta pra 10 e continua descendo até 0. Já revi o código e aparentemente está idêntico ao do professor.

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

$(
function(){
    atualizaFrase();
    inicializaContadores();
    inicializaCronometro();
    $("#botao-reiniciar").click(reiniciaJogo);
});

function atualizaFrase() {
    var frase = $(".frase").text();
    var numPalavras = frase.split(" ").length;
    var tamanhoFrase = $("#tamanho-frase");
    tamanhoFrase.text(numPalavras);
}

function inicializaContadores() {
    campo.on("input", function(){
        var conteudo = campo.val();

        var qtdPalavras = conteudo.split(/\S+/).length-1;
        $("#contador-palavras").text(qtdPalavras);

        conteudo = conteudo.replace(/ /g,'');

        var qtdCaracteres = conteudo.length;
        $("#contador-caracteres").text(qtdCaracteres);
    });
}

function inicializaCronometro() {
    var tempoRestante = $("#tempo-digitacao").text();
    campo.one("focus", function(){
        var cronometroID = setInterval(function(){
            tempoRestante--;
            $("#tempo-digitacao").text(tempoRestante);

            if(tempoRestante < 1){
                campo.attr("disabled", true);
                clearInterval(cronometroID);
            }
        },1000);
    });
}

function reiniciaJogo() {
    campo.attr("disabled", false);
    campo.val("");
    $("#contador-palavras").text("0");
    $("#contador-caracteres").text("0");
    $("#tempo-digitacao").text(tempoInicial);
    inicializaCronometro();
}
2 respostas

Nao sei se tem a ver, mas vc esta igualando conteudo = conteudo.replace(/ /g,'');. Talvez ele esteja confuso?!

function inicializaContadores() {
    campo.on("input", function () {
        var conteudo = campo.val();

        var qtdPalavras = conteudo.split(/\S+/).length - 1;
        $("#contador-palavras").text(qtdPalavras);

        var conteudoSemEspaco = conteudo.replace(/\s+/g, "");
        var qtdCaracteres = conteudoSemEspaco.length;
        $("#contador-caracteres").text(qtdCaracteres);

    });
}

Oi Neila, neste caso não está igualando, é atribuição de um valor ou expressão à uma variável. O uso do (/ /g,'') é somente para não contar espaços como caracteres.