7
respostas

Linhas automaticas no Placar

Galera,

no meu placar esta sendo inserido linhas automáticas em branco. O console ta apontando erro na nessa parte.

Uncaught ReferenceError: setTimeOut is not defined
    at HTMLAnchorElement.removeLinha (placar.js:55)
    at HTMLAnchorElement.dispatch (jquery.js:5110)
    at HTMLAnchorElement.elemData.handle (jquery.js:4918)

no meu codigo essa parte ta assim:

function removeLinha() {
    event.preventDefault();
    var linha = $(this).parent().parent();
    linha.fadeOut(1000);
    setTimeOut(function () {
        linha.remove();
    },1000);    
}

O codigo todo ta assim:

$("#botao-placar").click(mostraPlacar);
$("#botao-sync").click(sincronizaPlacar);


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

    var linha = novaLinha(usuario, numPalavras);
    linha.find(".botao-remover").click(removeLinha);

    corpoTabela.prepend(linha);//apend e prepend//
    $(".placar").slideDown(500);
    scrollPlacar();
}

function scrollPlacar() {
    var posicaoPlacar = $(".placar").offset().top;
    $("body").animate(
    {
        scrollTop: posicaoPlacar+"px"
        },1000);
}

$(".botao-remover").click(function(event){
    event.preventDefault();
    $(this).parent().parent().remove();
});

function novaLinha(usuario, palavras) {
    var linha = $("<tr>");
    var colunaUsuario = $("<td>").text(usuario);
    var colunaPalavras = $("<td>").text(palavras);
    var colunaRemover = $("<td>");

    var link = $("<a>").addClass("botao-remover").attr("href","#");
    var icone = $("<i>").addClass("small").addClass("material-icons").text("delete");

    link.append(icone);

    colunaRemover.append(link);

    linha.append(colunaUsuario);
    linha.append(colunaPalavras);
    linha.append(colunaRemover);

    return linha;
}

function removeLinha() {
    event.preventDefault();
    var linha = $(this).parent().parent();
    linha.fadeOut(1000);
    setTimeOut(function () {
        linha.remove();
    },1000);    
}

function mostraPlacar() {
    $(".placar").stop().slideToggle(600)

}

function sincronizaPlacar(){
    var placar = [];
    var linhas = $("tbody>tr");
    linhas.each(function(){
        var usuario = $(this).find("td:nth-child(1)").text();
        var palavras = $(this).find("td:nth-child(2)").text();

        var score = {
            usuario: usuario,
            pontos: palavras
        };

        placar.push(score);
    });

    var dados = {
        placar: placar
    };
    $.post("http://localhost:3000/placar",dados, function(){

    });

}

function atualizaPlacar(){
    $.get("http://localhost:3000/placar",function(data){
        $(data).each(function(){
            var linha = novaLinha(this.usuario, this.pontos);
            linha.find(".botao-remover").click(removeLinha);
            $("tbody").append(linha);


        });
    });
}

Qualquer ajuda sera bem vinda,

7 respostas

Boa tarde, Murilo! Como vai?

Uncaught ReferenceError: setTimeOut is not defined

Como o erro está indicando, o nome da função está incorreto! O nome certo é setTimeout(). Faça essa correção aí e veja se o seu código funcionará como esperado.

Caso continue dando erro é só falar aqui que eu te ajudo!

Grande abraço e bons estudos!

Opa gabriel, valeu pela agilidade na resposta.

Acabei de corrigir o erro do setTimeout(),

Mas ainda continua inserindo uma linha em branco no placar.

No servidor ta adicionando em branco:

{"usuario":"","pontos":"","_id":"f8Fu7BLD9hnAtP6P"}

enquanto o normal é ela preenchida

{"usuario":"Joao","pontos":"4","_id":"4lvhOk09DNP9HlnI"}

Murilo, vc poderia postar o conteúdo do arquivo main.js pra eu dar uma olhada?

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

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

function atualizaTempoInicial(tempo) {
    $("#tempo-digitacao").text(tempo);
    tempoInicial = tempo;
}

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() {
    campo.one("focus", function() {
        var tempoRestante = $("#tempo-digitacao").text();
        var cronometroID = setInterval(function() {
            tempoRestante--;
            $("#tempo-digitacao").text(tempoRestante);
            if (tempoRestante < 1) {
            clearInterval(cronometroID);
            finalizaJogo();

            }
        }, 1000);
    });
}   

function finalizaJogo() {
    campo.attr("disabled", true);
    campo.toggleClass("campo-desativado");
    inserePlacar();

}

function inicializaMarcadores () {
    campo.on("input", function() {
        var frase = $(".frase").text();
        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 reiniciaJogo(){
    campo.attr("disabled",false);
    campo.val("");
    $("#contador-palavras").text("0");
    $("#contador-caracteres").text("0");
    $("#tempo-digitacao").text(tempoInicial);
    inicializaCronometro();
    campo.toggleClass("campo-desativado");
    campo.removeClass("borda-verde");
    campo.removeClass("borda-vermelha");
}

Olhando o código não consegui identificar nenhum problema.

Vc poderia compartilhar o código completo do seu projeto ( tanto o código do jogo quanto o do servidor )? Daí é só colocar no github, dropbox ou google drive e mandar o link aqui que eu baixo os projetos e dou uma olhada mais a fundo no que está acontecendo!

Vou continuar dando uma olhadinha aqui, pra ver se eu acho aqui... qualquar coisa eu posto aqui mais tarde.

Obrigado pela atencao

Perfeito, Murilo! Qualquer coisa é só falar e eu volto!

E se achar a solução do problema, posta aqui tbm pra que os demais alunos saibam o que ocorreu caso alguém caia na mesma situação no futuro!

Grande abraço e bons estudos!