1
resposta

[Bug] A linha que separa os produtos do valor fica desaparecendo

Olá, eu estava realizando as atividades por conta própria quando me deparei com este bug:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Geralmente tem uma linha no meio, assim como aparece nos videos:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Porém, no meu projeto só aparece essa linha depois de adicionar um produto:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E após mais alguns produtos, ela some:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Eu sei que esse é apenas um bug visual, que não afeta realmente a experiência do usuário, mas eu gostaria de entender porque isso acontece. Talvez pelo fato de eu seguir uma abordagem diferente na hora de adicionar os produtos ao carrinho:

let listaDeProdutos = document.getElementById('lista-produtos');
listaDeProdutos.innerHTML = "<section class='carrinho__produtos__produto'></section>";
let valorTotal = document.getElementById('valor-total');
valorTotal.innerHTML = 'R$0';
let totalGeral = 0;
function adicionar() {
    //recuperar valores: nome do produto, quantidade e valor
    let produto = document.getElementById('produto').value;
    let nomeProduto = produto.split('-')[0];
    let valorUnitario = produto.split('R$')[1];
    let quantidade = parseInt(document.getElementById('quantidade').value);
    let novoProduto = `<span class="texto-azul">${quantidade}x</span> ${nomeProduto} <span class="texto-azul">R$${valorUnitario}</span>`;
    let sectionStart = '<section class="carrinho__produtos__produto">';
    let sectionEnd = '</section>';
    let ordemDaListaDeProdutos = [];
    let listaDeProdutos = document.getElementById('lista-produtos');
    if (quantidade == 0 || quantidade == '' || isNaN(quantidade)) {
        alert('Preencha a quantidade corretamente');
        return;
    }


    //calcular o preço, o nosso subtotal
    let preço = valorUnitario * quantidade;

    //adicionar no carrinho
    ordemDaListaDeProdutos.push(sectionStart, novoProduto, sectionEnd);
    console.log(ordemDaListaDeProdutos)
    let novosElementos = ordemDaListaDeProdutos.join('\n');
    listaDeProdutos.innerHTML += novosElementos

    //atualizar o valor total
    totalGeral += preço;    
    let valorTotal = document.getElementById('valor-total');
    valorTotal.textContent = `R$ ${totalGeral}`;
}
1 resposta

Opa boa tarde!! Tenta trocar o código por esse pra ver se soluciona o problema, possa ser que a section da class "carrinho__produtos__produto" esteja cobrindo essa div da class "divisoria"

let totalCompra; // Variável que acumule os valores 
limpar();

function adicionar(){
// recuperar valores: nome do produto | quantidade | valor 
    let produto = document.getElementById('produto').value;
    let nomeProduto = produto.split('-')[0];  //Split usado para separar o antes e depois dos elementos, separados por alguma coisa // 
    let valorProdutoString = produto.split('R$')[1].replace('.', '').replace(',', '.').trim();  // Aqui está pegando o que vem depois do "R$" na posição 1
    let valorProduto = parseFloat(valorProdutoString); // Aqui está pegando o que vem depois do "R$" na posição 1
    let quantidadeProduto = document.getElementById('quantidade').value;
    
// calcular o preço, subtotal do produto X a quantidade 
    let carrinho = quantidadeProduto * valorProduto;

// adiconar no carrinho
    let listaCarrinho = document.getElementById('lista-produtos');
    listaCarrinho.innerHTML = listaCarrinho.innerHTML + `<section class="carrinho__produtos__produto">
          <span class="texto-azul">${quantidadeProduto}x</span> ${nomeProduto} <span class="texto-azul">
            R$${carrinho.toLocaleString('pt-BR', {minimumFractionDigits: 2, maximumFractionDigits: 2})}</span></section>`;

// total  das compras
    totalCompra = totalCompra + carrinho;
    let totalCompraAtualizado = document.getElementById('valor-total');
    totalCompraAtualizado.innerHTML = `<span class="texto-azul" id="valor-total">R$ ${totalCompra.toLocaleString('pt-BR', {minimumFractionDigits: 2, maximumFractionDigits: 2})} </span>`
    document.getElementById('quantidade').value = ' ';
}

function limpar(){
    document.getElementById('lista-produtos').innerHTML = ' ';
    document.getElementById('valor-total').textContent ='0,00';
    totalCompra = 0;
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade