Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro ao contar o numero de palavras

não consigo achar o erro no código, mas não está contando as palavras.

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

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

function atualizaTamanhoFrase(){
    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(" ").length;
        $("#contador-palavras").text(qtdPalavras);

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

function inicializaCronometro() {
    var tempoRestante = $("#tempo-digitacao").text();
    campo.one("focus", function() {
        //$("#botao-reiniciar").attr("disabled",true);
        var cronometroID = setInterval(function() {
            tempoRestante--;
            $("#tempo-digitacao").text(tempoRestante);
            if (tempoRestante < 1) {
                campo.attr("disabled", true);
                clearInterval(cronometroID);
                //campo.toggleClass("campo-desativado");
                campo.addClass("campo-desativado");
            }
        }, 1000);
    });
}   

$("#botao-reiniciar").click(reiniciaJogo);




function reiniciaJogo(){
    campo.attr("disabled",false);
    campo.val("");
    $("#contador-palavras").text("0");
    $("#contador-caracteres").text("0");
    $("#tempo-digitacao").text(tempoInicial);
    inicializaCronometro(); //novo tempo
    campo.toggleClass("campo-desativado");

    campo.removeClass("borda-vermelha"); 
    campo.removeClass("borda-verde");
}


function inicializaMarcadores() {

    var frase = $(".frase").text();
    campo.on("input", function() {
        var digitado = campo.val();
        var comparavel = frase.substr(0 , digitado.length);
        if(digitado == comparavel) {
            campo.addClass("borda-verde");
            campo.removeClass("borda-vermelha");
        } else {
            campo.addClass("borda-vermelha");
            campo.removeClass("borda-verde");
        }
    });

}


function inserePlacar(){
    var corpoTabela = $(".placar").find("tbody");
    var usuario = "Seu-nome";
    var numPalavras = $("#contador-palavras").text();

    var linha = "<tr>"+
                    "<td>"+ usuario + "</td>"+
                    "<td>"+ numPalavras + "</td>"+
                "</tr>";
    corpoTabela.append(linha);//add linha depois
    //corpoTabela.prepend(linha);//add linha antes
} aqui
3 respostas
solução!

Oi, Renata, tudo bem?

Dentro da sua função inicializaContadores() você faltou adicionar a regex dentro da variável qtdPalavras, ficando assim: var qtdPalavras = conteudo.split(/\S+/).length - 1;

Agora, a quantidade de palavras vai ser computada.

Testa e me fala se seu certo!

Laís, não deu certo. O contador não está funcionando tb. O que faço ?

Oi, Renata, tudo bem?

Fiz o teste novamente com o trecho do código que você compartilhou e segue um print do meu teste: https://imgur.com/a/TjFAima

Ele consegue pegar o número de palavras. Se preferir, você poderia disponibilizar o seu projeto pelo googledrive ou pelo github para que possa baixar e testar com o seu código completo.