Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] projeto Ingresso Online

Escrevi o código nesse formato e funcionou, acabou ficando bem diferente da resolução dos instrutores, a minha dúvida é esse código mesmo funcionando pode ser considerado correto?

function comprar() {
    let tipoIngresso=document.getElementById('tipo-ingresso').value;
    let quantidade=document.getElementById('qtd').value;
    let quantidadePorSetor=document.getElementById(`qtd-${tipoIngresso}`).textContent;
    if (quantidade<=0) {
        alert('O valor da quantidade não é valido');
        return;
    }

    if (quantidadePorSetor<=0) {
        alert('ingresso esgotado');
        return;
    }

    quantidadePorSetor=quantidadePorSetor-quantidade;
    
    document.getElementById(`qtd-${tipoIngresso}`).textContent=quantidadePorSetor;
    document.getElementById('qtd').value = '';
}
2 respostas
solução!

Seu código parece estar funcional e aborda a lógica de verificação adequada para a compra de ingressos. No entanto, existem algumas melhorias que podem ser consideradas:

  1. Validação Numérica:

    • Você verifica se a quantidade é menor ou igual a zero, o que está correto. No entanto, você pode considerar adicionar uma verificação adicional para garantir que a entrada seja um número.
    if (isNaN(quantidade) || quantidade <= 0) {
        alert('O valor da quantidade não é válido');
        return;
    }
    
  2. Operações com Strings:

    • Você está comparando strings no seu código (quantidade e quantidadePorSetor). É uma prática melhor converter essas strings em números antes de realizar operações matemáticas.
    let quantidade = parseInt(document.getElementById('qtd').value, 10);
    let quantidadePorSetor = parseInt(document.getElementById(`qtd-${tipoIngresso}`).textContent, 10);
    
  3. Verificação de Disponibilidade:

    • A lógica para verificar se a quantidade excede o número máximo de ingressos está correta, mas você pode querer considerar adicionar uma mensagem informativa mais específica.
    if (quantidade > quantidadePorSetor) {
        alert('A quantidade desejada é maior do que a disponível para venda.');
        return;
    }
    

Essas sugestões são principalmente para melhorar a robustez do código e torná-lo mais fácil de entender e manter. No geral, se o seu código está atendendo aos requisitos do seu projeto, você está no caminho certo.

Obrigada me ajudou a entender um bug que estava acontecendo com a verificação de if (quantidade > quantidadePorSetor) que estava dando erro quando era colocado a quantidade entre 40 e 99, oque estava causando esse erro era a falta do "parseInt" nas variáveis oque resultava em um calculo incorreto e resultando em alert mesmo os valores sendo validos.

function comprar() {
    let tipoIngresso=document.getElementById('tipo-ingresso').value;
    let quantidade= parseInt(document.getElementById('qtd').value, 10);
    let quantidadePorSetor= parseInt(document.getElementById(`qtd-${tipoIngresso}`).textContent, 10);
    if (isNaN(quantidade)||quantidade<=0) {
        alert('O valor da quantidade não é valido');
        return;
    }

    if (quantidadePorSetor<=0) {
        alert('ingresso esgotado');
        return;
    }

    if (quantidade>quantidadePorSetor) {
        alert('A quantidade desejada é maior do que a disponível para venda.');
        return;
    }

    quantidadePorSetor=quantidadePorSetor-quantidade;
    
    document.getElementById(`qtd-${tipoIngresso}`).textContent=quantidadePorSetor;
    document.getElementById('qtd').value = '';
}

Acredito que com a adição de suas sugestões esteja tudo funcionando corretamente.