Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida e sugestão

Boa noite,

Neste exercício, não estou conseguindo criar uma função, na qual apareça um alerta, caso o usuário, digite uma letra, ou clica apenas no botão sem digitar nada. Nesta situação, gostaria que aparecesse um alerta: Digite apenas número ou Você ainda não digitou seu número. Gostaria de ter uma dica.

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>
    var segredo = 5;

    var input = document.querySelector("input");

    function verifica() {

        if(input.value == segredo) {

        alert("Você ACERTOU!");
        } else {

        alert("Você ERROU!!!!!!!!");
        }

    }

    var button = document.querySelector("button");

    button.onclick = verifica;

</script>
2 respostas

Olá, Otacilio! Tudo certo? :)

Antes de tudo, peço desculpas pela demora em responder.

Para criar mais blocos de condição, podemos utilizar uma nova estrutura bem interessante, o else if, que significa “senão se”. Quando utilizamos o else, queremos dizer que, caso uma condição seja falsa, outra coisa acontecerá, certo? Desse modo, com o else if, além de afirmar que outro comando será executado, também adicionamos uma nova condição.

Vamos alterar o seu código para você ver isso na prática!

Inicialmente, queremos verificar se o usuário não digitou nada. Podemos, então, analisar se input.value é igual a “”, ou seja, se o valor está vazio. Dessa forma, seu código ficaria assim:

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>
    var segredo = 5;
    var input = document.querySelector("input");

    function verifica() {
        if(input.value == segredo) {
            alert("Você ACERTOU!");
        } else if (input.value == "") {
            alert("Você ainda não digitou seu número!");
        } else {
            alert("Você ERROU!!!!!!!!");
        }   
    }

    var button = document.querySelector("button");
    button.onclick = verifica;

</script>

Notou que eu adicionei o else if? O Javascript, diante dessa nova situação, faria o seguinte passo a passo:

  • input.value é igual a segredo?
  • Senão, input.value é igual a string vazia?

Essa sequência mostra que dentro do else existe uma nova condição a ser analisada! Caso ela também fosse falsa, o Javascript continuaria o código, dando como resultado que o usuário errou o número.

Falta ainda analisar se o usuário digitou ou não um número! Então, logo após o bloco de else if criamos um novo else if. A verificação a ser construída é se o valor digitado não é um número, para isso podemos utilizar a função isNan() .

Colocamos o valor a ser analisado entre os parênteses, da seguinte maneira: isNaN(input.value)

Ao fim, seu código ficará desta forma:

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>
    var segredo = 5;
    var input = document.querySelector("input");

    function verifica() {
        if(input.value == segredo) {
            alert("Você ACERTOU!");
        } else if (input.value == "") {
            alert("Você ainda não digitou seu número!");
        } else if (isNaN(input.value)) {
            alert("Digite apenas números!");
        } else {
            alert("Você ERROU!!!!!!!!");
        }   
    }

    var button = document.querySelector("button");
    button.onclick = verifica;

</script>

Agora, seu programa irá realizar várias verificações e, caso nenhuma seja verdadeira, significa dizer que o usuário errou o número secreto!

Muito legal a sua sugestão, Otacilio! Caso tenha alguma dúvida sobre a minha explicação ou com relação ao curso, sinta-se confortável para enviar sua pergunta no fórum! Ficarei muito feliz em te ajudar!

Como apoio aos seus estudos, recomendo um vídeo da Alura sobre como ter um bom proveito do fórum. Para assisti-lo, você pode clicar no link abaixo:

Até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!
solução!

Oi Andrieli,

Obrigado pela dica!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software