2
respostas

Compartilhar meu código e pedido de ajuda.

let valorTotal;
limpar();

function adicionar() {
/ recuperar valores nome do produto, quantidade e valor / 
let produto = document.getElementById('produto').value; 
let quantidade = parseInt(document.getElementById('quantidade').value);
let nomeDoProduto = produto.split('-')[0];
let valorDoProduto = produto.split('R$')[1];*

/* Caluclar o preço total */
let precoTotal = valorDoProduto * quantidade;

/* adicionar no carrinho */
let carrinho = document.getElementById('lista-produtos');

if(quantidade <= 0) {
alert('Por favor, insira a quantidade do item.');
} else {
carrinho.innerHTML = carrinho.innerHTML + `<section class="carrinho__produtos__produto">
<span class="texto-azul">${quantidade}</span> ${nomeDoProduto} <span class="texto-azul">R$${precoTotal}</span></section>`;
}

/* atualizar a soma do valor total */
valorTotal = valorTotal + precoTotal;

/* atualizar o site com o carrinho */
let campoTotal = document.getElementById('valor-total');
campoTotal.textContent = `R$${valorTotal}`;

/* Chamando a função limpar Quantidade para cada vez que apertar o botão adicionar */
limparQuantidade();
}

/* Função para limpar a quantidade de produtos */
function limparQuantidade() {
let limpaQuantidade = document.getElementById('quantidade');
limpaQuantidade.value = '';
}

/* Função para limpar a lista de produtos do carrinho */
function limparCarrinho(){
let limpaCarrinho = document.getElementById('lista-produtos');
limpaCarrinho.innerHTML = "";
}

/* Função para limpar o valor total da soma */
function limparValorTotal() {
let limpaTotal = document.getElementById('valor-total');
limpaTotal.textContent = `R$${0}`;
}

/* Função do botão Limpar */
function limpar() {
valorTotal = 0;
limparCarrinho();
limparValorTotal();

}

**Queria muito solucionar/aprimorar um parte do código. Na parte: **

/* adicionar no carrinho */
let carrinho = document.getElementById('lista-produtos');

if(quantidade <= 0) {
alert('Por favor, insira a quantidade do item.');
} else {
carrinho.innerHTML = carrinho.innerHTML + `<section class="carrinho__produtos__produto">
<span class="texto-azul">${quantidade}</span> ${nomeDoProduto} <span class="texto-azul">R$${precoTotal}</span></section>`;
}

se a quantidade for menor ou igual do que zero então ele so manda um alerta e não adiciona nada no carrinho, perfeito. Mas caso você não insira nenhum valor na quantidade, ele prossegue e adiciona no carrinho com #null nome do intem #null. Eu tentei colocar:

if(quantidade <= 0 || quantidade === null)

mas não deu certo. Poderia, me ajudar?

2 respostas

Olá, Lucas! O problema é que quando você não insere nenhum valor na quantidade, o valor de quantidade se torna NaN (Not a Number) após a tentativa de conversão com parseInt(). Portanto, verificar se quantidade é null não funcionará nesse caso.

Você pode verificar se quantidade é NaN usando a função isNaN(). Aqui está como você pode fazer isso:

if (isNaN(quantidade) || quantidade <= 0) {
    alert('Por favor, insira a quantidade do item.');
} else {
    // restante do código
}

Neste código, se quantidade for NaN ou menor ou igual a zero, o programa exibirá um alerta pedindo ao usuário para inserir a quantidade do item.

Espero que isso ajude! Se você tiver mais perguntas, sinta-se à vontade para perguntar. Estou aqui para ajudar!

function limpar() {
    let limpaCarrinho = document.getElementById('lista-produtos');
    limpaCarrinho.innerHTML = "";
    let limpaTotal = document.getElementById('valor-total');
    limpaTotal.textContent = `R$${0}`;
}

limpar();
let valorTotal = 0;

function adicionar() {
    let produto = document.getElementById('produto').value; 
    let quantidade = parseInt(document.getElementById('quantidade').value);
    let nomeDoProduto = produto.split('-')[0];
    let valorDoProduto = parseFloat(produto.split('R$')[1]);

    let precoTotal = valorDoProduto * quantidade;

    let carrinho = document.getElementById('lista-produtos');

    if(quantidade <= 0) {
        alert('Por favor, insira a quantidade do item.');
    } else {
        carrinho.innerHTML = carrinho.innerHTML + `<section class="carrinho__produtos__produto">
        <span class="texto-azul">${quantidade}</span> ${nomeDoProduto} <span class="texto-azul">R$${precoTotal}</span></section>`;
    }

    valorTotal = valorTotal + precoTotal;

    let campoTotal = document.getElementById('valor-total');
    campoTotal.textContent = `R$${valorTotal}`;

    limparQuantidade();
}

function limparQuantidade() {
    let limpaQuantidade = document.getElementById('quantidade');
    limpaQuantidade.value = '';
}