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

[Bug] bug de some em um input

Olá, estou fazendo um projeto de placar do jogo RUMMIKUB baseado em um dos projetos da Alura da Imersão_Dev, e estou com um bug que não sei como arrumar.

  • tenho um input onde coloco a pontuação de cada jogador;
  • essa pontuação deve ser somada a cada novo input que eu colocar na coluna Total;

O bug está quando eu clico em OK no input quando ele está vazio, zera toda a pontuação e fica um NaN no lugar... ![](PAGINA COM UMA TABELA COM NOME, NUMEROS DE VITORIA E PONTUAÇÃO ) Gostaria de um help nesse código, por favor:

var listaDeJogadores = [];
var elementoTabela = document.getElementById('tabelaJogadores');

function exibirNaTela() {
    elementoTabela.innerHTML = "";
    listaDeJogadores.forEach((jogador, index) => {

    elementoTabela.innerHTML += `
            <tr>
            <td>${jogador.nome}</td>
            <td>${jogador.vitoria}</td>
            <td><input id="quantidade" type="number" placeholder="100" class="input__jogador">
                <button onClick="adicionarValor(${index})">OK</button></td>
            <td>${jogador.pontos}</td>
            <td><button onClick="adicionarVitoria(${index})">Vitória</button></td>
            <td><button onClick="limparPontuacaoJogador(${index})">Limpar pontos</button></td>
            <td><button onClick="removerJogador(${index})">Remover jogador</button></td>
            </tr>
    `;
    });
}

function criarJogador() {
    //verificar se player ja existe ou não
    var nomeNovoJogador = document.getElementById("campoNomeJogador").value;
    if(nomeNovoJogador == '') {
      alert('Informe o nome do Jogador');
      return;
  }
    listaDeJogadores.push({
      nome: nomeNovoJogador,
      vitoria: 0,
      pontos: 0
    });
    document.getElementById("campoNomeJogador").value = "";
    exibirNaTela();
  }

function adicionarVitoria(index) {
    listaDeJogadores[index].vitoria++;
    exibirNaTela();
}

function adicionarValor(index) {
    let quantidade = parseInt(document.getElementById('quantidade').value);
      
        listaDeJogadores[index].pontos = listaDeJogadores[index].pontos + quantidade;
        if (quantidade == '') {
          alert("informe pontuação");
          return;
      }
    exibirNaTela();

}
function limparPontuacaoJogador(index) {
    listaDeJogadores[index].vitoria = 0;
    listaDeJogadores[index].pontos = 0;
    exibirNaTela();
  }

  function removerJogador(index) {
    listaDeJogadores.splice(index, 1);
    exibirNaTela();
  }
  
  function apagarJogadores() {
    listaDeJogadores = [];
    exibirNaTela();
  }
2 respostas
solução!

Pode estar relacionado com o fato do If você utilizar a quantidade como String if (quantidade == '' " ) { alert("informe pontuação"); return; } exibirNaTela();

Dessa forma você tá verificando se quantidade é uma String vazia e não se está faltando um Number. Pode corrigir dessa forma.

function adicionarValor(index) { let quantidadeInput = document.getElementById('quantidade'); let quantidade = parseInt(quantidadeInput.value);

if (isNaN(quantidade) || quantidade < 0) {
    alert("Informe uma quantidade válida");
    return;
}

listaDeJogadores[index].pontos += quantidade;
quantidadeInput.value = ""; // Limpa o campo de entrada
exibirNaTela();

}

Pedro, funcionou perfeitamente, muito obrigado pela ajuda!