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

Inclusão duplicada de linhas na tabela e quantidade de palavas placar

Vi que há um post no fórum com dúvida similar a minha, mas como não há resposta ainda, vou colocar aqui meu código pra ver se tenho um pouco mais de sorte... Basicamente, no momento que o jogo é finalizado, a linha é incluída 2 vezes na tabela e a quantidade de palavras não é atualizada corretamente. Segue parte do meu código:

var numPalavras = $("#contador-palavras").text();
var nome = "Jogador1";

function inserePlacar(){

    var corpoTabela = $(".placar").find("tbody"); 

    var nomeJogador = document.createElement("td");
    nomeJogador.textContent = nome;

    var ptoJogador = document.createElement("td");
    ptoJogador.textContent = numPalavras;

    var novaPontuacao = document.createElement("tr");
    novaPontuacao.appendChild(nomeJogador);
    novaPontuacao.appendChild(ptoJogador);

    corpoTabela.append(novaPontuacao);

}
6 respostas

Fala aí Orlando, tudo bem? Consegue mandar o projeto completo? Sobe ele no Github ou zipa e manda pelo Google Drive.

Assim ficaria mais fácil tentar lhe ajudar, pois consigo simular o problema na minha máquina.

Fico no aguardo.

Fala, Matheus, segue o link: https://drive.google.com/open?id=1sFjf8pQWhMc9FL4r6hQWsIAyR3LK_sT9

Resolvi o problema da quantidade de palavras não ser atualizada, só passando a variável numPalavras para dentro da função inserePlacar(), mas a inserção duplicada não...

solução!

Fala aí Orlando, tudo bem? Estava corrido por aqui as coisas.

Bom, dei uma olhada no código, o problema é porque você está iniciando o cronometro duas vezes:

$(function() {
    atualizaTamanhoFrase();
    iniciaContadores();
    iniciaCronometro();
    alertaErrosDigitacao();
    reiniciaJogo();
    $("#botao-reiniciar").click(reiniciaJogo);
});

Repare que nesse função, você chama a função reiniciaJogo e olha o código dela:

function reiniciaJogo(){
    campo.attr("disabled",false); //habilitando o campo texto
    campo.val(""); // limpando o texto escrito
    $("#contador-palavras").text(0);
    $("#contador-caracteres").text(0);
    $("#tempo-digitacao").text(tempoInicial);
    iniciaCronometro();
    campo.toggleClass("campo-desativado");
    campo.removeClass("borda-vermelha");
    campo.removeClass("borda-verde"); 
};

Também tem o iniciaCronometro.

Para resolver o problema você pode remover a função iniciaCronometro da sua função principal:

$(function() {
    atualizaTamanhoFrase();
    iniciaContadores();
    iniciaCronometro(); // remove aqui
    alertaErrosDigitacao();
    reiniciaJogo();
    $("#botao-reiniciar").click(reiniciaJogo);
});

Espero ter ajudado.

Fala, Matheus, obrigado pela resposta! Removi a função e deu certinho.

Magina Orlando, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software