Fiz algumas alterações no programa original, adicionando algumas funções. Todas estão funcionando corretamente, mas uma ainda está me deixando insatisfeito. No começo do programa, quando é pedido que o usuário digite a quantidade de ingreditentes, percebi que caso eu não digitasse um valor inteiro, o programa não seguia adiante e aparecia apenas a tela escrita "Receitas do Yan".
Decidi acrescentar uma função que verifica se o valor da quantidade era inteiro, e caso contrário, apareceria uma mensagem de erro:
function verificaQuantidade(valor) {
if (Number.isInteger(valor) == false) {
alert('Valor inválido! Digite um número inteiro!');
}
return valor;
}
O código funciona corretamente e a mensagem de erro aparece. Porém, após isso, ele volta pra mesma tela com "Receitas do Yan". Gostaria de saber se tem como o programa reiniciar após a mensagem de erro e perguntasse novamente a quantidade de ingredientes que o usuário gostaria.
Código completo:
<meta charset="UTF-8">
<h1>Receitas do Yan</h1>
<script>
function pulaLinha() {
document.write("<br>")
}
function listarIngredientes() {
for (posicao = 0 ; posicao < ingredientes.length ; posicao++) {
document.write(`<h3>${ingredientes[posicao]}</h3>`);
}
pulaLinha();
}
function verificaQuantidade(valor) {
if (Number.isInteger(valor) == false) {
alert('Valor inválido! Digite um número inteiro!');
}
return valor;
}
var ingredientes = [];
var quantidadeInformada = parseInt(prompt("Quantos ingredientes você vai adicionar?"));
var quantidade = verificaQuantidade(quantidadeInformada);
var contador = 1;
while( contador <= quantidade) {
var ingrediente = prompt("Informe o ingrediente " + contador);
var achou = false;
for (posicao = 0 ; posicao < ingredientes.length ; posicao++) {
if (ingredientes[posicao] == ingrediente) {
achou = true;
alert('Ingrediente já adicionado!')
break;
}
}
if (achou == false) {
ingredientes.push(ingrediente);
contador++;
}
}
listarIngredientes();
</script>