1
resposta

Desafio: hora da prática Exercio 1

Ao fazer o exercicio precisei alterar o código em HTML para teste e acrescentei outro parametro em JS HTML

DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@700&family=Inter:wght@400;600;700&display=swap"
    rel="stylesheet">
  <link rel="stylesheet" href="style.css">

  <title>Carrinho de compras</title>
</head>

<body>
  <main class="conteudo-principal">
    <div class="grafismo-azul"></div>
    <section class="adicionar-produto">
      <h1 class="titulo">
        Carrinho de <span class="texto-azul">compras</span>
      </h1>

      <form class="formulario">
        <label class="campo-grupo">
          <span class="texto-medio-azul">Produto</span>
          <**select class="produto-input" name="produto" id="produto">
            <option value=""></option>** <!-- Adicionado um campo vazio para teste-->
            <option value="Fone de ouvido - R$100">Fone de ouvido - R$100</option>
            <option value="Celular - R$1400">Celular - R$1400</option>
            <option value="Oculus VR - R$5000">Oculus VR - R$5000</option>
          </select>
          </div>
        </label>

        <section class="parte-inferior">
          <label class="campo-grupo">
            <span class="texto-medio-azul">Qtde.</span>
            <input class="quantidade-input" id="quantidade" type="**text**" placeholder="100"><!-- Modificação para teste-->
          </label>

          <section class="botoes-wrapper">
            <button onclick="adicionar()" type="button" class="botao-form botao-adicionar">Adicionar</button>
            <button onclick="limpar()" type="button" class="botao-form botao-limpar">Limpar</button>
          </section>
        </section>
      </form>
    </section>
    <section class="carrinho">
      <img src="./assets/carrinho-cinza.svg" alt="Imagem de um carrinho de compras cinza">

      <div class="titulo-wrapper">
        <img src="./assets/icone-carrinho.svg" alt="ícone de carrinho">

        <h2 class="carrinho__titulo">Produtos no carrinho</h2>
      </div>

      <section class="carrinho__produtos" id="lista-produtos">
        <section class="carrinho__produtos__produto">
          <span class="texto-azul">1x</span> Celular <span class="texto-azul">R$1400</span>
        </section>
      </section>

      <div class="divisoria"></div>

      <p class="carrinho__total">
        Total: <span class="texto-azul" id="valor-total">R$1400</span>
      </p>
    </section>
  </main>

  <script src="js/app.js"></script>
</body>

</html>

JS

//Iniciar com zero
let totalGeral;
limpar();
 function adicionar(){
   //Recuperar valores
   let produto = document.getElementById('produto').value;
   let quantidadeProduto = parseInt(document.getElementById('quantidade')).value;

   //// Verificar se o produto selecionado é válido
   if(!produto || produto.trim() === "" ){
      alert ("Adicione um produto");
      return
   }

   // Verificar se a quantidade inserida é válida
   if(isNaN((quantidadeProduto) || (quantidadeProduto) < 0) **|| (!quantidadeProduto**)){//Em negrito Veriifca se foi inserido dados
      alert("insira a quantidade");
      return;
   }
   let nomeProduto = produto.split('-')[0];
   let valorUnitario = produto.split('R$')[1];
   
   //Calcular subtotoal
   let preco = parseFloat(quantidadeProduto * valorUnitario);
   //ADICIONAR CARRINHON
   let carrinho = document.getElementById('lista-produtos');
   carrinho.innerHTML =carrinho.innerHTML +`<section class="carrinho__produtos__produto">
      <span class="texto-azul">${quantidadeProduto}x</span> ${nomeProduto} <span class="texto-azul">${preco}</span>
    </section>`; //Adiciona itens incluindo o padrão

    //ATUALIZAR O VALOR TOTAL
    totalGeral= totalGeral + preco;
    let campoTotal = document.getElementById(`valor-total`);
    campoTotal.textContent = `R$ ${totalGeral}`;
    //limpa o campo quantidde ao adicionar o item
    quantidadeProduto = document.getElementById('quantidade').value=0;

    console.log(`${nomeProduto} qte:${quantidadeProduto} Valor R$ ${valorUnitario} Preço: ${preco}`)

}
function limpar(){
   totalGeral = 0;
   document.getElementById('lista-produtos').innerHTML ='';
   document.getElementById(`valor-total`).textContent = 'R$ 0';
}
1 resposta

Olá, Ivan. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótimo como você implementou a verificação para garantir que um produto seja selecionado antes de adicioná-lo ao carrinho. Isso evita erros na exibição e cálculo do total.

Um detalhe importante: no trecho abaixo, a conversão de quantidadeProduto pode estar gerando um erro, pois a chamada de parseInt está fora de ordem. Veja como ajustar:


let quantidadeProduto = parseInt(document.getElementById('quantidade').value);

Isso garante que o valor seja convertido corretamente antes de ser utilizado.

  Alura   Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!