Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

dúvidas sobre o meu código

eu lidei de maneira diferente com o valor que já existia no carrinho, gostaria de saber sua opinião à respeito, se isso foi ou não uma boa escolha.

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

addEventListener ('DOMContentLoaded', function(){
     totalGeral = document.getElementById('valor-total').textContent;
     totalGeral = Number(totalGeral.split('R$')[1]);
})

function adicionar (){
    let produto = document.getElementById('produto').value;
    let nomeProduto = produto.split('-')[0];
    let quantidade = document.getElementById('quantidade').value;
    let preco = produto.split('R$')[1];
    let totalPorProduto = Number(preco)*Number(quantidade);
    totalGeral = totalGeral + totalPorProduto;
    listaDeProdutos.innerHTML += ` <section class="carrinho__produtos__produto">
          <span class="texto-azul">${quantidade}x</span> ${nomeProduto} <span class="texto-azul">R$ ${totalPorProduto}</span>
        </section>`;
    mensagemTotal.textContent = `R$ ${totalGeral}`;
   document.getElementById('quantidade').value = 0;
}

function limpar (){
    totalGeral = 0;
    listaDeProdutos.textContent= '';
    mensagemTotal.textContent = '';
    document.getElementById('quantidade').value = '';
    
}
1 resposta

Olá, Renata, como vai?

A sua abordagem com o evento DOMContentLoaded demonstra uma ótima compreensão sobre o ciclo de vida do documento e sobre como capturar dados diretamente da interface. Ler o valor inicial presente no HTML para sincronizar com a variável JavaScript funciona bem na prática, porém traz uma dependência direta da estrutura do texto estático que veio no arquivo HTML. Se alguém alterar a formatação inicial da página, como trocar o prefixo de moeda ou deixar o elemento vazio, o tratamento com split e conversão numérica pode acabar gerando um resultado inesperado, como NaN.

Manter a regra de negócio controlando o estado inicial dos dados, inicializando o total direto no JavaScript como foi feito na aula, costuma ser uma prática mais segura porque torna o código independente do conteúdo inicial da página. Além disso, na sua função limpar, repare que ao definir o texto do total como vazio, a interface fica sem o formato padrão de moeda, enquanto definir como zero mantém a consistência visual para quem está usando a aplicação.

Pensando na manutenção desse projeto em uma equipe, quais vantagens e desafios você enxerga em deixar os dados iniciais vindo do HTML em comparação com defini-los direto no script?

Qualquer dúvida adicional, o fórum está sempre à disposição para conversarmos mais.

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