7
respostas

[Bug] Index só carrega o primeiro alert

alert ('Bem-vindo ao nosso site!'); let nome = Lua; let idade = 25; let numeroDeVendas = 50; let saldoDisponivel = 1000; alert('Erro! Preencha todos os campos'); let mensagemDeErro = 'Erro! Preencha todos os campos'; alert(mensagemDeErro); let nome = prompt('Digite o seu nome'); let idade = prompt('Digite a sua idade'); let idade = prompt('Digite a sua idade'); if (idade >= 18) { alert('Pode tirar a habilitação!'); }

Tem alguma coisa errada que eu não estou vendo? Não aparece os comandos no index.

7 respostas

Comigo também, ta errado a estrutura mesmo. Joguei na Ia e pedi uma revisão e usando a que a Ia monta roda corretamente:

alert('Boas vindas ao nosso site');

let nome = prompt('Digite o seu nome'); let idade = prompt('Digite a sua idade');

if (nome === '' || idade === '' || nome === null || idade === null) { alert('Erro! Preencha todos os campos'); } else { idade = Number(idade); // Converte string para número if (idade >= 18) { alert('Pode tirar a habilitação!'); } }

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi Suelen, você conseguiu resolver??? Estou com o mesmo problema.

Olá pessoal.

Eu não assisti essa aula e não sei exatamente como é o exercício que vocês têm que resolver, mas tentei só fazer o código funcionar da forma mais simples possível, eu fiz duas versões basicamente, esse é a primeira versão completa:

alert ('Bem-vindo ao nosso site!');

let mensagemDeErro = 'Erro! Preencha todos os campos';
let nome = prompt('Digite o seu nome');
let idade = prompt('Digite a sua idade');

if((nome === '' || nome === null) || (idade === '' || idade === null)) { alert(mensagemDeErro); }

else {

    if (idade >= 18) { alert(nome + ' pode tirar a habilitação!'); }
    else { alert(nome + ' não pode tirar a habilitação!'); }
}

Vou explicar cada parte, esse código é uma versão mais básica para vocês entenderem a lógica das validações.

alert ('Bem-vindo ao nosso site!');

Aqui estamos utilizando a função alert() para exibir uma mensagem na tela assim que a página ou o script começar a rodar.

let mensagemDeErro = 'Erro! Preencha todos os campos';

Criamos uma variável chamada mensagemDeErro que armazena a mensagem de erro que vamos usar depois. Assim, se quisermos mudar a mensagem no futuro, só precisamos alterar essa variável em um único lugar.

let nome = prompt('Digite o seu nome');
let idade = prompt('Digite a sua idade');

Utilizamos a função prompt() para pedir ao usuário que digite o nome e a idade. O que acontece aqui é que o valor digitado fica armazenado dentro das variáveis nome e idade.

Agora, precisamos verificar se o usuário preencheu corretamente os campos antes de continuar.

if((nome === '' || nome === null) || (idade === '' || idade === null)) { 
    alert(mensagemDeErro);
}

Aqui usamos uma estrutura condicional if para verificar se o usuário deixou algum campo vazio.

  • Se nome for igual a "" (vazio) ou null (caso o usuário tenha cancelado o prompt), significa que ele não preencheu.
  • O mesmo vale para idade.

Se pelo menos um dos campos estiver vazio ou for null, mostramos o alert(mensagemDeErro), avisando o usuário do erro.

Caso o usuário tenha preenchido corretamente, continuamos com outra verificação:

else {
    if (idade >= 18) { 
        alert(nome + ' pode tirar a habilitação!'); 
    }
    else { 
        alert(nome + ' não pode tirar a habilitação!'); 
    }
}

Aqui temos mais um if dentro do else, que verifica a idade:

  • Se a idade for maior ou igual a 18, significa que o usuário pode tirar a habilitação, então mostramos a mensagem confirmando isso.
  • Caso contrário, mostramos uma mensagem dizendo que ele não pode.

Aqui tem uma segunda versão com o while para validação, não sei se já viram, mas é certo que vão ver sobre loops no futuro, esse é um segundo código:

alert('Bem-vindo ao nosso site!');

let mensagemDeErro = 'Erro! Preencha todos os campos';

let dadosPreenchidos = false;
let nome;
let idade;

while (dadosPreenchidos === false) { // enquanto os dados não forem preenchidos, vai repetir esse bloco de código
    nome = prompt('Digite o seu nome');
    idade = prompt('Digite a sua idade');
    dadosPreenchidos = (nome !== '' && nome !== null) && (idade !== '' && idade !== null); //aqui vou validar se todos os campos foram preenchidos, caso precise adicionar mais campos, só seguir a mesma lógica

    if (!dadosPreenchidos) //verifico se os dados não foram preenchidos e se não foram, vai mostrar amensagem abaixo
    {
        alert(mensagemDeErro);
    }
}

if (idade >= 18) { alert(nome + ' pode tirar a habilitação!'); } //checa se possui 18 anos ou mais e retorna mensagem positiva
else { alert(nome + ' não pode tirar a habilitação!'); } //se não for maior ou igual a 18 anos retorna mensagem negativa

Agora, em vez de pedir diretamente os valores, criamos uma variável chamada dadosPreenchidos que vai nos ajudar a verificar se o usuário realmente digitou algo válido.

let dadosPreenchidos = false;
let nome;
let idade;
  • dadosPreenchidos = false significa que, no início, assumimos que o usuário ainda não preencheu os dados corretamente.
  • Declaramos as variáveis nome e idade sem atribuir valores ainda.

Agora, usamos um loop while para forçar o usuário a preencher corretamente os dados antes de continuar.

while (dadosPreenchidos === false) { 

O while significa "enquanto a condição for verdadeira, continue repetindo esse bloco de código". No caso, enquanto dadosPreenchidos for false, continuamos pedindo os dados.

Dentro do while, pedimos o nome e a idade:

Agora, validamos se o usuário realmente digitou algo válido.

    dadosPreenchidos = (nome !== '' && nome !== null) && (idade !== '' && idade !== null);

Aqui verificamos se os dois campos foram preenchidos corretamente. Se os dois estiverem preenchidos corretamente, dadosPreenchidos recebe true, e o while para de repetir. O restante é bem parecido com o primeiro código. Espero que eu tenha ajudado!

Felipe Guarnieri obrigado pela aula. vou aplicar umas coisas que vc escreveu nos proximos exercícios.

Erika Marciano Motta, consegui sim! No meu caso, o erro estava na linha 2, pois o nome Lua, precisava estar entre aspas; outro erro também no If da linha 11: prompt sempre retorna um texto (string), então idade será uma string e não um número. Comparar uma string com um número (idade >= 18) pode não funcionar corretamente. Inseri na linha anterior : idade = parseInt(prompt('Digite a sua idade'));

Corrigido ficou assim:

alert('Bem vindo ao nosso site!');

let nome = "Lua"; let idade = 25; let numeroDeVendas = 50; let saldoDisponível = 1000;

alert('Erro! Preencha todos os campos');

let mensagemDeErro = 'Erro! Preencha todos os campos'; alert(mensagemDeErro);

nome = prompt('Digite o seu nome'); idade = parseInt(prompt('Digite a sua idade'));

if (idade >= 18) { alert('Pode tirar a habilitação!'); } else { // Apenas "else", sem condição alert('Vai de busão!'); }

Obrigada pela ajuda Suellen, meu erro estava na segunda linha, o nome Lua estava sem as aspas. Valeeeu \o/

Obrigado, Felipe! Pelas dicas e pela explicação!