1
resposta

[Dúvida] Compra ingresso - Meu código não está funcionando

O código funciona corretamente para a compra da cadeira superior e pista, porém ao tentar comprar a cadeira inferior ele subtrai da superior:

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 {  // Já testei com else if aqui e apresentou o mesmo erro
    comprarInferior(qtd);
}
}
function comprarPista(qtd) {
let pistaDisponivel = document.getElementById ('qtd-pista').textContent;
if (qtd > pistaDisponivel) {
    alert ('Quantidade indisponível para tipo pista');
}else{
   pistaDisponivel = pistaDisponivel - qtd;
   document.getElementById ('qtd-pista').textContent = pistaDisponivel;
    alert ('Compra realizada com sucesso');

}
   }
   function comprarSuperior(qtd) {
let qtdSuperior = 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 = 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!');
}
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Oi, Estudante, tudo bem? 😊

Analisando seu código, encontrei um pequeno problema que está causando esse comportamento inesperado. 🤔

Na condição else if (tipo.value = 'superior'), você utilizou um único sinal de igual (=), que é um operador de atribuição, e não de comparação.

Para corrigir, você deve usar o operador de comparação de igualdade (==) ou o de igualdade estrita (===).

A diferença entre eles é que o == compara os valores, enquanto o === compara os valores e os tipos.

No seu caso, tanto == quanto === devem funcionar, já que você está comparando strings.

Aqui está a correção:

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 {
        comprarInferior(qtd);
    }
}

Com essa alteração, o código deve funcionar corretamente para todos os tipos de ingresso. 👍

🎓 Para saber mais:

Espero ter ajudado e bons estudos! 🧐