1
resposta

O código não está funcionando corretamente

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeO meu código:

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

    if (tipo.value == 'pista'){
        comprarPista (qtd);
    } else if (tipo.value == 'superior') {
        comprarSuperior (qtd);
    } else (tipo.value == 'inferior')
        comprarInferior (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 comprarSuperior(qtd) {
    let qtdSuperior = parseInt(document.getElementById('qtd-superior').textContent);
    if (qtd > qtdSuperior) {
        alert('Quantidade indisponível para tipo superior');
    } else {
        qtdSuperior = qtdSuperior - qtd;
        document.getElementById('qtd-superior').textContent = qtdSuperior;
        alert('Compra realizada com sucesso!');
    }

}

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

Ao comprar o ingresso pista, ele está diminuindo tanto da pista quanto do tipo inferior. E o ingresso superior está diminuindo do superior e inferior. Além disso, eles aparecem dois alerts no tipo pista e no superior.

Poderia me mostrar onde está o erro, por gentileza.

1 resposta

O problema está no else, no último bloco, quando o tipo de ingresso é "inferior", a condição else não está adequadamente estruturada o correto seria usar else if para verificar o valor de tipo.value e garantir que a função comprarInferior() seja executada corretamente:

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

    if (tipo.value == 'pista') {
        comprarPista(qtd);
    } else if (tipo.value == 'superior') {
        comprarSuperior(qtd);
    } else if (tipo.value == 'inferior') {  // Aqui foi trocado o else para else if
        comprarInferior(qtd);
    }
}