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

Alert do desafio 1 sendo acionado com qualquer número

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

ele é acionada com qualquer número, não sei o motivo

2 respostas
solução!

Olá Thiago!

Pelo que você descreveu, parece que o alert está sendo acionado para qualquer valor inserido na variável quantidade. Isso pode estar acontecendo por alguns motivos comuns. Vamos analisar o seu código:

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

Aqui estão algumas possíveis causas e soluções:

  1. Tipo de Dado da Variável quantidade:

    • Certifique-se de que a variável quantidade está sendo convertida para um número antes de fazer a validação. Se quantidade for uma string, a comparação quantidade <= 0 pode não funcionar como esperado.
    • Você pode usar parseInt para garantir que quantidade é um número. Por exemplo:
      quantidade = parseInt(quantidade, 10);
      if (isNaN(quantidade) || quantidade <= 0) {
          alert("insira uma quantidade válida.");
          return;
      }
      
  2. Verificação de isNaN:

    • A função isNaN verifica se o valor não é um número. Se quantidade não for um número válido após a conversão, isNaN(quantidade) retornará true.
    • Certifique-se de que quantidade está sendo corretamente capturado do input do usuário.
  3. Espaços em Branco e Valores Vazios:

    • Se o usuário inserir um valor vazio ou espaços em branco, isso pode causar problemas. Você pode adicionar uma verificação para isso:
      quantidade = quantidade.trim(); // Remove espaços em branco
      if (quantidade == "" || isNaN(quantidade) || quantidade <= 0) {
          alert("insira uma quantidade válida.");
          return;
      }
      

Aqui está um exemplo completo de como pode ficar o seu código:

let quantidade = document.getElementById('quantidade').value;
quantidade = quantidade.trim(); // Remove espaços em branco
quantidade = parseInt(quantidade); // Converte para número

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

// Código para adicionar ao carrinho continua aqui

Espero ter ajudado e bons estudos!

A última solução resolveu o problema, provavelmente o .value depois de ('quantidade')