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

Inclusão dos outros tipos de ingressos

Eu adiantei as funções de compra dos outros tipos de ingressos. Tem algo que de pra melhorar aqui? To sentindo o código repetitivo, mas sei que é possível deixar mais enxuto, mas ainda não sei fazer sozinho rs...

function comprar() {
    let tipo = document.getElementById('tipo-ingresso');
    let qtd = parseInt(document.getElementById('qtd').value);
    
    if (tipo.value == 'pista') {
        comprarPista(qtd);
    }

    if (tipo.value == 'inferior') {
        comprarCadeiraInferior(qtd);
    }
    
    // aqui, inicialmente eu havia indicado outro "if", mas corrigi finalizando com else

    else {
        comprarCadeiraSuperior(qtd);
    }
}

function comprarPista(qtd) {
    let qtdPista = parseInt(document.getElementById('qtd-pista').textContent);
    if(qtd > qtdPista) {
        alert('Quantidade indisponível para tipo Pista');
    } else {
        qtdPista = qtdPista - qtd;
        document.getElementById('qtd-pista').textContent = qtdPista;
        alert('Compra realizada com sucesso');
    }
}

function comprarCadeiraInferior(qtd) {
    let qtdInferior = parseInt(document.getElementById('qtd-inferior').textContent);
    if(qtd > qtdInferior) {
        alert('Quantidade indisponível para tipo Pista');
    } else {
        qtdInferior = qtdInferior - qtd;
        document.getElementById('qtd-inferior').textContent = qtdInferior;
        alert('Compra realizada com sucesso');
    }
}

function comprarCadeiraSuperior(qtd) {
    let qtdSuperior = parseInt(document.getElementById('qtd-superior').textContent);
    if(qtd > qtdSuperior) {
        alert('Quantidade indisponível para tipo Pista');
    } else {
        qtdSuperior = qtdSuperior - qtd;
        document.getElementById('qtd-superior').textContent = qtdSuperior;
        alert('Compra realizada com sucesso');
    }
}
1 resposta
solução!

Olá, Iago. Tudo bem?

Obrigado por compartilhar seu código aqui com a gente.

Muito bom como você estruturou as funções para diferentes tipos de ingresso. O ponto sobre repetição faz sentido: há uma oportunidade de melhorar o código usando uma abordagem para evitar duplicação.

Veja este exemplo, onde centralizamos a lógica repetida em uma única função:


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

    comprarIngresso(tipo, qtd);
}

function comprarIngresso(tipo, qtd) {
    let estoque = document.getElementById(`qtd-${tipo}`).textContent;
    let qtdDisponivel = parseInt(estoque);

    if (qtd > qtdDisponivel) {
        alert(`Quantidade indisponível para tipo ${tipo}`);
    } else {
        qtdDisponivel -= qtd;
        document.getElementById(`qtd-${tipo}`).textContent = qtdDisponivel;
        alert('Compra realizada com sucesso');
    }
}

Neste ajuste, usamos o parâmetro tipo para acessar dinamicamente o estoque do elemento correspondente, reduzindo a repetição.

Conte com o apoio do Fórum. Abraços e bons estudos.