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

[Projeto] Projeto carrinho de compras - tentando fazer sozinho

Tentei fazer o código sozinho o máximo que pude.

let listaDeProdutos = document.getElementById('lista-produtos');
let valorDaCompra = document.getElementById('valor-total');
let valorDaSomaTotal = 0;    

window.onload = function esvaziar() {
listaDeProdutos.innerHTML = [''];
valorDaCompra.innerHTML = [''];
}

function adicionar() {
    let produtosParaVenda = document.getElementById('produto').value;
    let valorDeProduto = produtosParaVenda.split('R$');
    let produtoEmSi = produtosParaVenda.split('-');
    let quantidadeDeProdutos = (document.getElementById('quantidade').value);
    let valorDaSoma = quantidadeDeProdutos * valorDeProduto[1];
valorDaSomaTotal = valorDaSomaTotal + valorDaSoma;
valorDaCompra.textContent = `R$${valorDaSomaTotal}`;
if (quantidadeDeProdutos <= 0) {
    alert ('A quantidade de produto não foi escolhida');
    return;
}
    let noCarinho = [];
noCarinho.push(` <section class="carrinho__produtos__produto"><span class="texto-azul">${quantidadeDeProdutos}x</span> ${produtoEmSi[0]} <span class="texto-azul">R$${valorDeProduto[1]}</span></section>`);
    let produtosExistentes = listaDeProdutos.innerHTML;
    let produtoExibido = produtosExistentes.split(',');
if (produtoExibido.length > 0) {
    noCarinho.unshift(produtoExibido);
}
listaDeProdutos.innerHTML = noCarinho.join('</section>');
(document.getElementById('quantidade').value) = 1;
}

function limpar() {
listaDeProdutos.innerHTML = [''];
valorDaCompra.innerHTML = [''];
valorDaSomaTotal = 0;
}

Minha conclusão é que eu complico muitas as coisas , pesquisar ajuda muito , mas nas minhas próximas tentativas vou tentar achar soluções mais simples.

1 resposta
solução!

Oii João, tudo bem?

É muito positivo ver que você tentou resolver tudo sozinho antes de buscar a solução pronta. Esse esforço aparece claramente no seu código e faz muita diferença no aprendizado. A sensação de que “complicou demais” é comum nessa fase e, na prática, é um sinal de que você está realmente pensando na lógica, não só copiando.

Seu código mostra bons entendimentos importantes: você buscou os elementos do DOM e reutilizou essas referências, usou split() para separar nome e preço do produto e montou o HTML do carrinho usando template string. Tudo isso está totalmente alinhado com o objetivo do desafio.

Alguns ajustes vão te ajudar a deixar a solução mais simples e previsível. Um ponto importante é a ordem da validação. Hoje, o cálculo do valor total acontece antes de você verificar se a quantidade é válida. Isso pode gerar resultados incorretos caso o usuário informe zero ou um valor negativo. Sempre que possível, valide primeiro e só depois faça qualquer cálculo ou alteração na tela.

Outro detalhe é que os valores vindos do input chegam como string. O JavaScript até tenta converter automaticamente quando você faz contas, mas isso pode gerar comportamentos estranhos mais para frente. Converter explicitamente a quantidade e o valor do produto para número deixa o código mais seguro e mais fácil de entender.

Você também acabou complicando um pouco a lógica do carrinho ao criar arrays, usar push, unshift e join. Para esse cenário, não é necessário tudo isso. Como o carrinho já existe no HTML, basta concatenar o novo produto ao conteúdo atual do innerHTML. Isso reduz bastante o código e deixa o raciocínio mais direto.

Um ponto final de atenção é o valor exibido no carrinho. No item adicionado, você está mostrando o preço unitário do produto, mas o ideal é exibir o valor total daquele item, considerando a quantidade escolhida. Esse cálculo você já faz, então é só reaproveitá-lo na exibição.

No geral, sua leitura está correta: no começo a gente tende a dar voltas maiores para chegar na solução. Com o tempo, você passa a reconhecer padrões e naturalmente escreve menos código para resolver o mesmo problema. Uma boa prática agora é refatorar o seu próprio código aos poucos, melhorando um ponto por vez. Isso acelera muito a evolução e fortalece a lógica.

E se quiser pode sempre verificar a opinião do instrutor na atividade mesmo.

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