1
resposta

[Sugestão] Resolvendo de outra maneira

Estudando melhor o exercício por achar estranha a quantidade de funções, cheguei à conclusão que era possível concatenar o tipo de ingresso através do ID, já que no HTML, por sorte, são iguais os resultados do ".value" do tipo de ingresso e o ID que acompanha o "qtd-" de cada tipo.

Na prática, deu certo, e fiz algumas verificações adicionais. Existe algum erro no código? Inclusive gostaria de saber se tem alguma diferença do Number para ParseInt.

function comprar(){
    let quantidade = Number(document.getElementById('qtd').value);
    let tipoDeIngresso = document.getElementById('tipo-ingresso').value;
    let ingressosRestantes = Number(document.getElementById(`qtd-${tipoDeIngresso}`).textContent);
    if (quantidade >= 1) {
        if (quantidade > ingressosRestantes){
            alert('Não é possível comprar mais ingressos deste tipo, eles estão esgotados!');
            document.getElementById('qtd').value = '';
            return;
        }
        document.getElementById(`qtd-${tipoDeIngresso}`).textContent = document.getElementById(`qtd-${tipoDeIngresso}`).textContent - quantidade;
    } else {
        alert('A quantidade não é válida.');
        return;
    }
    document.getElementById('qtd').value = '';
}
1 resposta

Olá, Daniel! Como vai?

Que interessante a sua abordagem de concatenar o tipo de ingresso através do ID! Isso pode realmente simplificar o código e torná-lo mais eficiente. Sobre a sua dúvida, vamos lá:

  1. Verificação do Código: Pelo que você descreveu e pelo código que compartilhou, parece que ele está funcionando conforme o esperado. Você está verificando se a quantidade desejada é válida e se há ingressos suficientes antes de permitir a compra, o que é uma boa prática.

  2. Diferença entre Number e parseInt:

    • Number(): Converte o valor para um número, e é mais abrangente, pois lida com números inteiros e decimais. Se a conversão falhar, retorna NaN.
    • parseInt(): Converte uma string para um número inteiro. Ele analisa a string até onde consegue encontrar números inteiros e ignora o restante. Você pode especificar a base numérica (radix) como segundo argumento, o que é recomendado para evitar comportamentos inesperados.

    No seu caso, como você está lidando com valores numéricos que representam quantidades, Number() é uma boa escolha, especialmente se houver a possibilidade de lidar com decimais. No entanto, se você tiver certeza de que sempre estará lidando com números inteiros, parseInt() também funcionaria, mas lembre-se de especificar a base, por exemplo, parseInt(value, 10).

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.