Olá amigo.
Seu código está correto e resolve o desafio proposto.
A lógica de validação, verificação de disponibilidade e atualização da quantidade de ingressos funciona como esperado.
Pontos positivos
- A validação impede a compra com quantidade menor ou igual a zero
- Uso adequado do
parseInt - Boa estratégia ao acessar dinamicamente o elemento HTML com
"qtd-" + escolha - Atualização correta do valor exibido na tela
- Uso de
return para interromper a execução quando necessário
A estrutura geral da função está bem organizada e fácil de entender.
Sugestões de melhoria
1. Evitar variável global desnecessária
A variável qtdDisponivel não precisa existir fora da função, pois é usada apenas dentro dela.
Manter variáveis no escopo mais restrito possível ajuda a evitar efeitos colaterais.
2. Validação contra valores inválidos (NaN)
Caso o campo de quantidade esteja vazio ou contenha texto, parseInt retornará NaN. Essa situação não é capturada pela validação atual.
3. Pequenos ajustes de estilo
O return no else final não é obrigatório, pois a função já termina ali.
Não é um erro, apenas uma questão de estilo.
Versão refatorada do código
function comprar() {
let qtdIngresso = parseInt(document.getElementById("qtd").value);
let escolha = document.getElementById("tipo-ingresso").value;
if (isNaN(qtdIngresso) || qtdIngresso <= 0) {
alert("Opção inválida!");
document.getElementById("qtd").value = "";
return;
}
let quantidadeHtml = document.getElementById("qtd-" + escolha);
let qtdDisponivel = parseInt(quantidadeHtml.textContent);
if (qtdIngresso <= qtdDisponivel) {
quantidadeHtml.textContent = qtdDisponivel - qtdIngresso;
alert("Compra realizada com sucesso!");
} else {
alert("Não há essa quantidade de ingressos disponíveis!");
}
document.getElementById("qtd").value = "";
}
O código está correto e atende ao desafio.
Com pequenos ajustes, ele se torna mais seguro, legível e alinhado com boas práticas de JavaScript.
Parabéns pelo empenho e dedicação.
Qualquer duvida estamos ai.
Bons estudos.