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

[object Object] segundos

Olá pessoal.

Meu código estava funcionando tudo ok até colocar as funções. Cheguei até este ponto, quando clico no botão reiniciar, aparece isso no tempo "[object Object] segundos" e não some. O detalhe é que não aparece erro nenhum. Onde estou errando? Acho que é alguma coisa com o $("#tempo-digitacao"), mas não acho...

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

//$(document).ready()   =   $(function()
$(function(){
    atualizaTamanhoFrase();
    inicializaContadores();
    inicializaCronometro();
    $("#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(/\S+/).length - 1;
        $("#contador-palavras").text(qtdPalavras);
        //retira o espaço da String 
        var conteudoSemEspaco = conteudo.replace(/\s+/g, '');
        var qtdCaracteres = conteudoSemEspaco.length;
        $("#contador-caracteres").text(qtdCaracteres);
    });
};

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

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();
    };
5 respostas

Olá!

Primeiramente, você verificou que há duas funções inicializaCronometro() no seu código? Provavelmente não é esse o problema, mas pode ser.

Opa Luiz, beleza?

Obrigado pela resposta, eu retirei uma função inicializaCronometro() e deixei assim:


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);
    });
}

Porém o problema persiste como você previu.

Então,

Analisei o seu código e verifiquei o seguinte, no começo você tem:

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

E depois você tem

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

Não seria assim?

        $("#tempo-digitacao").text(tempoInicial.text());
solução!

E ae cara blz? Dei uma olhada no seu código e achei um pequeno equivoco.

A variável tempoInicial deveria ser assim:

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

Para que no momento que que o jogo for reiniciar vc possa passar

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

E o jQuery compreender que vc está passando apenas valor do tempo. Pois da forma como vc está passando, vc envia o objeto todo para ele e não é necessário.

Agradeço muito a ajuda de todos! Todas recomendações me fizeram entender melhor o problema.

Bons estudos a todos. Abraço.