2
respostas

desafio

// Variável global para o total do carrinho
let totalGeral;
limpar();

// Função para adicionar produtos no carrinho com validações
function adicionar() {
  // Recupera os valores dos inputs
  let produtoInput = document.getElementById('produto').value;
  let quantidadeInput = document.getElementById('quantidade').value;
  let mensagemErro = document.getElementById('mensagemErro');
  
  // Limpa mensagem de erro anterior
  mensagemErro.textContent = "";
  
  // Validações: produto deve estar no formato "nome - R$valor" e quantidade maior que zero
  if (!produtoInput || !produtoInput.includes('-') || !produtoInput.includes('R$')) {
    mensagemErro.textContent = "Produto inválido. Use o formato: nome - R$valor";
    return;
  }
  if (!quantidadeInput || isNaN(quantidadeInput) || parseInt(quantidadeInput) <= 0) {
    mensagemErro.textContent = "Quantidade inválida. Insira um número maior que zero.";
    return;
  }
  
  // Extrai nome e valor unitário do produto
  let nomeProduto = produtoInput.split('-')[0].trim();
  let valorUnitarioStr = produtoInput.split('R$')[1].trim();
  let valorUnitario = parseFloat(valorUnitarioStr.replace(',', '.'));
  let quantidade = parseInt(quantidadeInput);

  if (isNaN(valorUnitario)) {
    mensagemErro.textContent = "Valor unitário inválido.";
    return;
  }

  // Calcula o preço (subtotal)
  let preco = quantidade * valorUnitario;
  let carrinho = document.getElementById('lista-produtos');

  // Adiciona o produto ao carrinho
  carrinho.innerHTML += `<section class="carrinho__produtos__produto">
      <span class="texto-azul">${quantidade}x</span> ${nomeProduto} 
      <span class="texto-azul">R$${preco.toFixed(2)}</span>
    </section>`;
 
  // Atualiza o valor total
  totalGeral += preco;
  let campoTotal = document.getElementById('valor-total');
  campoTotal.textContent = `R$ ${totalGeral.toFixed(2)}`;
  document.getElementById('quantidade').value = 0;
}

// Função para limpar o carrinho e reiniciar o total
function limpar() {
  totalGeral = 0;
  document.getElementById('lista-produtos').innerHTML = '';
  document.getElementById('valor-total').textContent = 'R$ 0';
}

// Formulário simples: Recupera os valores dos campos e exibe no console e na tela
function recuperarValores() {
  let nome = document.getElementById('nome').value;
  let email = document.getElementById('email').value;
  console.log("Nome:", nome);
  console.log("Email:", email);
  document.getElementById('resultadoFormulario').textContent = `Nome: ${nome}, Email: ${email}`;
}

// Exemplo de modificação de um elemento HTML utilizando textContent
function modificarParagrafo() {
  let paragrafo = document.getElementById('paragrafoExemplo');
  paragrafo.textContent = "O conteúdo deste parágrafo foi modificado pelo JavaScript!";
}

// Soma de duas variáveis numéricas e exibe o resultado no console com Template String
function somarVariaveis() {
  let num1 = 10;
  let num2 = 20;
  let soma = num1 + num2;
  console.log(`A soma de ${num1} e ${num2} é ${soma}.`);
}

// Recebe uma string com, no mínimo, duas sentenças separadas por ponto e vírgula e as divide
function splitSentencas() {
  let sentencas = "Esta é a primeira sentença;Esta é a segunda sentença;Esta é a terceira sentença";
  let arraySentencas = sentencas.split(";");
  console.log("Sentenças separadas:", arraySentencas);
}

// Recebe uma string com números separados por vírgulas e os separa utilizando split()
function splitNumeros() {
  let numerosString = "10,20,30,40,50";
  let arrayNumeros = numerosString.split(",");
  console.log("Números separados:", arrayNumeros);
}
2 respostas
// Desafio 1: Validação de Entrada
let totalGeral;
limpar();

function adicionar() {
    let produto = document.getElementById('produto').value;
    let quantidade = document.getElementById('quantidade').value;

    // Verificar se o produto selecionado é válido
    if (!produto || produto.trim() === "") {
        alert("Selecione um produto válido.");
        return;
    }

    // Verificar se a quantidade inserida é válida
    if (isNaN(quantidade) || quantidade <= 0) {
        alert("Insira uma quantidade válida.");
        return;
    }

    let nomeProduto = produto.split('-')[0];
    let valorUnitario = parseFloat(produto.split('R$')[1]);
    let preco = quantidade * valorUnitario;

    let carrinho = document.getElementById('lista-produtos');
    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>`;

    totalGeral = totalGeral + preco;
    let campoTotal = document.getElementById('valor-total');
    campoTotal.textContent = `R$ ${totalGeral}`;
    document.getElementById('quantidade').value = 0;
}

function limpar() {
    totalGeral = 0;
    document.getElementById('lista-produtos').innerHTML = '';
    document.getElementById('valor-total').textContent = 'R$0';
}

// Desafio 2: Captura de Valores do Formulário
// HTML esperado:
/*
<html>
<body>
  <form id="meuForm">
      <label for="campoNome">Nome:</label>
      <input type="text" id="campoNome" name="nome">
      
      <label for="campoIdade">Idade:</label>
      <input type="text" id="campoIdade" name="idade">

      <button type="button" onclick="capturarValores()">Capturar Valores</button>
    
    <div id='mostraNome'><span>Seu nome e idade irão aparecer aqui.</span></div>
  </form>

  <script src="script.js"></script>
</body>
</html>
*/

function capturarValores() {
    const nome = document.getElementById('campoNome').value;
    const idade = document.getElementById('campoIdade').value;

    document.getElementById('mostraNome').textContent = `Nome: ${nome}, Idade: ${idade}`;
    console.log(`Nome: ${nome}, Idade: ${idade}`);
}

// Desafio 3: Modificação de Código HTML
// HTML esperado:
/*
<html>
  <body>
    <p id="meuParagrafo">Texto original</p>
    <button onclick="modificarConteudo()">Modificar Conteúdo</button>
    <script src="script.js"></script>
  </body>
</html>
*/

function modificarConteudo() {
    const paragrafo = document.getElementById('meuParagrafo');
    paragrafo.textContent = 'Novo texto modificado dinamicamente!';
}

// Desafio 4: Soma de dois números
const numero1 = 10;
const numero2 = 20;
const soma = numero1 + numero2;
const mensagem = `A soma de ${numero1} e ${numero2} é ${soma}.`;
console.log(mensagem);

// Desafio 5: Separar duas sentenças com ponto e vírgula
const duasSentencas = "Criar o que não existe ainda deve ser a pretensão de todo sujeito que está vivo; A tarefa mais importante de uma pessoa que vem ao mundo é criar algo";
const frasesSeparadas = duasSentencas.split(';');
console.log(frasesSeparadas);

// Desafio 6: Separar números com split()
const numerosSeparados = "10,20,30,40,50";
const arrayNumeros = numerosSeparados.split(',');
console.log(arrayNumeros);

Bom dia!

Sua resolução ficou excelente! Você fez um ótimo uso do aprendizado.

Parabéns pelo empenho nos estudos e continue praticando.

Para que mais pessoas consigam visualizar a sua solução proposta, é recomendado que você marque este tópico como solucionado. Assim pode ajudar ainda mais pessoas :)

Bons estudos!