Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Ingresso Online: Se qtd = ' '; o numero do ingresso vira NaN

Quero só reforçar o código, quando deixo a quantidade vazia ela quebra o valor do ingresso escolhido e ele vira um NaN (Not a Number). consegui resolver tirando o parseInt() da quantidade e do textContent do ingresso, mas tenho medo do Js acabar interpretando a qtd e o numero de ingressos como string e não realizar o calculo do jeito certo ou acabar bugando o código. Então queria saber se tem um jeito de deixar as variaveis ainda como números, mas fazer com que se o campo da quantidade estiver vazio não prejudique o valor do campo do ingresso e/ou alerte que o valor é invalido.

function comprar() {
    let tipoIngresso = document.getElementById('tipo-ingresso').value;
    let qtd = document.getElementById('qtd').value;  // aqui precisei tirar o parseInt()

    if (tipoIngresso == 'inferior') {
        comprarInferior(qtd);
    } else if (tipoIngresso == 'superior') {
        comprarSuperior(qtd);
    } else {
        comprarPista(qtd);
    }

    document.getElementById('qtd').value = '';
}

function comprarInferior(qtd) {
    let inferior = document.getElementById('qtd-inferior').textContent; // aqui também tirei o parseInt()

    if (qtd > inferior) {
        alert('Quantidade indisponível!');
    } else {
        inferior = inferior - qtd;
        document.getElementById('qtd-inferior').textContent = inferior;
    }
}

function comprarSuperior(qtd) {
    let superior = parseInt(document.getElementById('qtd-superior').textContent);// os outros ainda estão como parseInt()
  // pra ter certeza que o Js vai lê-los como números, mas quebram se qtd = ' '
    if (qtd > superior) {
        alert('Quantidade indisponível!');
    } else {
        superior = superior - qtd;
        document.getElementById('qtd-superior').textContent = superior;
    }
}

function comprarPista(qtd) {
    let pista = parseInt(document.getElementById('qtd-pista').textContent);

    if (qtd > pista) {
        alert('Quantidade indisponível!');
    } else {
        pista = pista - qtd;
        document.getElementById('qtd-pista').textContent = pista;
    }
}
1 resposta
solução!

Olá, Carlos, tudo bem?

Interessante notar que você já está analisando possíveis problemas que possam surgir. O que eu recomendo é fazer uma verificação se o campo 'qtd' está vazio antes de tentar fazer qualquer cálculo. Se estiver vazio, você pode alertar o usuário e interromper a execução da função. Como no código abaixo:

function comprar() {
    let tipoIngresso = document.getElementById('tipo-ingresso').value;
    let qtd = document.getElementById('qtd').value;

    // Verificar se o campo de quantidade está vazio ou não é um número
    if (qtd === '' || isNaN(qtd)) {
        alert('Por favor, insira uma quantidade válida.');
        return; // Encerrar a função aqui para evitar que continue com o processamento
    }

    qtd = parseInt(qtd);
// Restante do código..

Essa seria uma forma de contornar esse problema e evita o problema do NaN.

Espero ter ajudado.

Abraços e bons estudos!

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