Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Desafio 1 e 2

Estou tentando polir ao máximo para passar pros próximos desafios só quando me sentir totalmente seguro do que fiz. No primeiro desafio tive duas dúvidas, a necessidade de uma validação de produto, já que no campo só se pode escolher os produtos listados e com isso não consegui pensar como seria feita essa validação. Já a segunda dúvida ficou a respeito de como fiz e como queria que fizesse a validação de quantidade. Eis como fiz:

if (qtde >=1){
    console.log('Quantidade válida');
} else {
    alert('Quantidade de produtos inválida!');
    return;
}

Funcionou como uma luva, não poderia adicionar 0 protudos e nem -5 produtos, por exemplo, porém, fiquei muito pensativo porque como trabalhamos com um carrinho de produtos eletrônicos, não deveria ser possível a compra de "2.5 celulares", porém dessa maneira como está escrito, isso é totalmente possível. Cogitei algumas soluções como proibir usar o campo para escrever quantos produtos pelo HTML modificando de uma forma que ele poderia escolher a quantidade assim como normalmente fazemos em lojas online, mas como não era essa a ideia do desafio, quis me limitar a como fazer com que o JavaScript bloqueasse a adição de números decimais, e infelizmente não consegui, existe alguma maneira?

No desafio 2 eu simplesmente travei assim:

JavaScript:

function registro() {
   let nomeCliente = document.getElementById('nomeCliente').value;
   let idade = document.getElementById('idade').value;
   alert ('Olá!')
   alert (nomeCliente);
   alert (idade);
   };

HTML:

<!DOCTYPE html>
<html lang="en_US">
<form method="post" action=".">
  <div>
  <label for="nomeCliente">Nome:</label>
  <input type="text" id="nomeCliente" />
  </div>
  <div>
    <label for="idade">Idade:</label>
    <input type="number" id="idade" />
  </div>
  <div>
    <button type="button" onclick="registro()">Registrar</button>
  </div>
  </div>
    
</form>
</html>

Ai quando tentava usar o botão para registrar os dados, ocorria o seguinte erro no console toda vez que usava o botão:

Uncaught ReferenceError: registro is not defined at HTMLButtonElement.onclick (index.html:13:48)

Ai fiquei na duvida de como prosseguir PS.: Se tiver alguns erros de digitação, eu tive que reescrever tudo umas duas vezes porque sem querer fechei a aba do tópico

1 resposta
solução!

Olá Vinicius! Tudo joia?

Para a primeira dúvida do desafio 1, sobre como garantir que não sejam adicionados números decimais na quantidade de produtos, você pode utilizar a função Number.isInteger() do JavaScript para verificar se o número é um inteiro. Aqui está uma maneira de modificar seu código para incluir essa validação:

if (qtde >= 1 && Number.isInteger(qtde)) {
    console.log('Quantidade válida');
} else {
    alert('Quantidade de produtos inválida! Quantidades decimais não são permitidas.');
    return;
}

Esse código agora também verifica se a quantidade é um número inteiro, evitando a adição de quantidades como 2.5.

Quanto ao desafio 2, o problema que você está enfrentando com o erro "Uncaught ReferenceError: registro is not defined" geralmente ocorre quando o JavaScript não consegue encontrar a função que você está tentando chamar. Isso pode ser causado por vários motivos, como a função não estar definida ou o script não estar carregado corretamente. Uma solução comum é garantir que o script esteja sendo carregado corretamente no HTML. Certifique-se de que o script está em uma tag <script> e que está sendo carregado antes de tentar usar a função.

Por exemplo, você pode colocar o código JavaScript em uma tag <script> logo antes do fechamento da tag </body> no seu HTML:

<!DOCTYPE html>
<html lang="en_US">
<head>
    <title>Registro</title>
</head>
<body>
<form method="post" action=".">
    <div>
        <label for="nomeCliente">Nome:</label>
        <input type="text" id="nomeCliente" />
    </div>
    <div>
        <label for="idade">Idade:</label>
        <input type="number" id="idade" />
    </div>
    <div>
        <button type="button" onclick="registro()">Registrar</button>
    </div>
</form>
    <script src="script.js"></script>
</body>
</html>

Note que estou importando o arquivo que contém o código JavaScript para dentro do HTML, então, lembre de alterar o nome script.js para o nome do seu próprio arquivo. Isso deve resolver o problema do erro de referência não encontrada.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.