1
resposta

percebi que eu complico umas coisas simples.

fazendo o desafio percebi que costumo tomar o caminho mais longo e dificil e o chat gpt n ajuda.
o trem todo ta no github aqui

js

let carrinho = document.getElementById('lista-produtos');
let total = document.getElementById('valor-total');
let valorTotal;
limpar()

function adicionar() {
//recuperar valores nome do produto, quantidade e valor 

    let produto = document.getElementById('produto').value;
    let nomeProduto = produto.split('-')[0];
    let valorUnitario = parseInt(produto.split('R$')[1]);
    let quantidade = document.getElementById('quantidade').value;

//calcular o preço, o nosso subtotal 
    // Adicione validações no código para garantir que o usuário só consiga adicionar produtos ao carrinho se tiver selecionado um produto válido e inserido uma quantidade válida. Se a entrada não for válida, exiba uma mensagem de erro apropriada.
        if (quantidade === '' || isNaN(Number(quantidade)) || Number(quantidade) === 0) {
            alert('O campo quantidade não pode ser igual a zero ou vazio');
            return
        }
        
    let preco = quantidade * valorUnitario;
  

//adicionar no carrinho 
    
    carrinho.innerHTML = carrinho.innerHTML + `
        <section class="carrinho__produtos__produto">
          <span class="texto-azul">${quantidade}x</span> ${nomeProduto} <span class="texto-azul">R$${preco}</span>
        </section>`;    

//atualizar o valor total
    
    valorTotal = valorTotal + preco;
    total.innerHTML = `R$${valorTotal}`;
    document.getElementById('quantidade').value = " ";

}

function limpar() {
    quantidade.value = ' ';
    carrinho.innerHTML =' ';
    valorTotal = 0;
    total.innerHTML = `R$${valorTotal}`;
}

// Crie um formulário simples com campos de entrada e utilize JavaScript para recuperar os valores digitados nos campos usando a propriedade value. Exiba os valores no console e na tela.

let formulario = document.getElementById('cadstro__cliente');

formulario.addEventListener('submit', function(event) {
    event.preventDefault(); // Impede a página de recarregar

    let nome = document.getElementById('nome').value;
    let endereco = document.getElementById('endereco').value;
    let pagamento = document.getElementById('pagamento').value;

    console.log(`Pedido para: ${nome}`);
    console.log(`Endereço: ${endereco}`);
    console.log(`Pagamento via: ${pagamento}`);
    limparForm()
});

function limparForm() {
    nome.value = "";
    endereco.value = "";
    pagamento.value = "";
    frete.value = "";
    desconto.value = "";
    document.getElementById('sobre_voce').value = '';
}

// Tenha um elemento HTML na página (por exemplo, um parágrafo) e utilize JavaScript para modificar seu conteúdo usando a propriedade textContent.

function agradecimento() {
    const titulo = document.querySelector('.titulo');
    titulo.textContent = "OBRIGADO";
}

// Faça a soma de duas variáveis numéricas e apresente no console com uma mensagem amigável em Template String.

function finalizacao() {
    //valorProduto - (valorProduto * fatorDesconto)
    let frete = parseFloat(document.getElementById('frete').value);
    let desconto = parseFloat(document.getElementById('desconto').value);
    let descontoPorcentagem = parseFloat(desconto / 100);


    console.log(`Ola ${nome.value} seu pedido é de R$${valorTotal}
        com o frete de R$${frete} 
        e o desconto de ${desconto}% 
        fica ${(valorTotal+frete)-((valorTotal+frete)*descontoPorcentagem)}`);
}

// Receba, no mínimo, duas sentenças como uma string e utilize split() para quebrá-la em frases menores com base em um ponto e vírgula como delimitador.

function separadorDeTexto() {
    let sobreVoce = document.getElementById('sobre_voce').value;
    //     let valorUnitario = parseInt(produto.split('R$')[1]);
    let info = sobreVoce.split(';');

    console.log(sobreVoce);
    console.log(info);
}

const numerosSeparados = "10,20,30,40,50";
const arrayNumeros = numerosSeparados.split(',');
console.log(arrayNumeros);
1 resposta

Oii, Tairone.

É muito comum ter essa sensação de que estamos complicando algo simples quando estamos aprendendo lógica de programação. Na verdade, isso faz parte do processo. Muitas vezes, a solução que parece "mais longa" é apenas o reflexo de você tentando conectar todos os conceitos que aprendeu até agora, ou tentando prever cenários que o exercício básico não cobriu.

Analisei seu código e o repositório, e tenho algumas observações para te tranquilizar:

Você expandiu o exercício.

A principal razão do seu código parecer mais extenso ou complexo é porque você implementou funcionalidades que não estavam nos requisitos iniciais.

  • Você criou um formulário completo de cadastro.
  • Adicionou lógica para cálculo de frete e descontos.
  • Utilizou addEventListener pra controlar o envio do formulário.

Isso não é um erro, é prática. Ao adicionar essas funcionalidades, o código cresce naturalmente. Você não complicou a lógica do carrinho em si, você apenas construiu um sistema maior em volta dele.

Boas práticas aplicadas

Um ponto muito positivo no seu código é o uso do addEventListener para o formulário. Mesmo exemplos iniciais usem onclick direto no HTML por ser mais didático, a forma como você fez (separando o evento no JavaScript) é muito bem vista profissionalmente, pois mantém o HTML limpo e separa as responsabilidades. Você tomou um caminho "mais longo" de digitar, mas tecnicamente mais organizado.

Dica para simplificar a lógica:

Se o seu objetivo for treinar a síntese e escrever menos código, tente focar no essencial primeiro:

  1. Divida o problema: Antes de codar, anote o que é o mínimo necessário para funcionar (ex: pegar valor, verificar se é número, somar).
  2. Faça o básico: Implemente apenas isso.
  3. Incremente depois: Só adicione cálculos extras (como o frete e desconto) depois que a base estiver pronta.

Sua validação if (quantidade === '' || isNaN(Number(quantidade)) || Number(quantidade) === 0) tá correta. O instrutor usou uma abordagem similar, apenas um pouco mais resumida, mas a lógica é a mesma.

Não desanime. Seu código mostra que você está entendendo como manipular o DOM e criar interações. A capacidade de simplificar vem com o tempo e a leitura de códigos de outras pessoas.

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