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

Como parar o meu código??

eu queria poder depois do usuário acertar parar as mensagens e se o usuário digitar alguma letra apenas aparecer ("São aceitos apenas números, tente dnv")

como faço isso? já tentei usar break mas nn deu certo

<meta charset="UTF-8">

Tente adivinhar o número que eu estou pensando, de 0 a 10
<br>

<input/>

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

<script>

    var segredo = Math.round(Math.random() * 10);
    console.log(segredo);
    var input = document.querySelector("input");
    input.focus();

    function verifica() {

        while(isNaN(input.value)){

           alert("São aceitos apenas números, tente dnv");
           break;

        }

        if(input.value == segredo){

        alert("Você ACERTOU!");

    }

        if(input.value < segredo){

            alert("Vc errou... O número que eu pensei foi maior do que o número digitado");

        } else{

            alert("Vc errou... O número que eu pensei foi menor do que o número digitado");
        }

            input.value = "";
            input.focus();

    }

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

    button.onclick = verifica;

</script>
3 respostas
solução!

ta ai cara acho que consegui consertar o codigo, foi mt inteligente da sua parte usar esse While, confesso q eu nunca teria pensado nisso

<meta charset="UTF-8">

Tente adivinhar o número que eu estou pensando, de 0 a 10
<br>

<input/>

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

<script>

    var segredo = Math.round(Math.random() * 10);
    console.log(segredo);
    var input = document.querySelector("input");
    input.focus();

    function verifica() {
        //Primeiro eu coloquei uma variavel chamada stop com o valor false que nem eu vi em algumas aulas
        var stop = false

        while(isNaN(input.value)) {
            //quando o usuario digitar algo que não for um numero sera exibido essa mensagem e o valor da variavel sera mudada
           alert("São aceitos apenas números, tente dnv");
           stop= true
           break;
           //isso sera util porque mais abaixo no codigo iremos estabelecer a condição para continuar o codigo caso a variavel seja false

        }
        //assim criando uma condição, caso o usuario digite uma letra a variavel vai mudar seu valor e o restante do codigo nao sera executado, porem caso ele digite um numero a variavel ficara intacta e o codigo seguira normal
        if(input.value == segredo && stop==false){

        alert("Você ACERTOU!");

        }

        if(input.value < segredo){

            alert("Vc errou... O número que eu pensei foi maior do que o número digitado");

        //aqui ao inves de colocar um "else" eu coloquei outro if com a função contraria, a mensagem de erro apareça duas vezes ou mesmo que voce acerte, apesar de eu nao saber explicar mt bem o porquê kkkkkkkk
        } if(input.value > segredo){

            alert("Vc errou... O número que eu pensei foi menor do que o número digitado");
        }

            input.value = "";
            input.focus();

    }

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

    button.onclick = verifica;

</script>

E aí, Matheus, tudo bem?

Primeiramente, o break só funciona para interromper loops e o que você quer, nesse caso, é parar a função inteira no caso de uma letra ser digitada. Em vez de break, use return, ele serve para interromper a função, como você quer.

Já, o erro nas mensagens está nos seus ifs. O que está ocorrendo no seu código, é que você usou um if e depois um if else, então, ele está validando no primeiro if, se input.value == segredo e depois, faz o if else dos erros.

Então, supondo que que o usuário tenha acertado, o código vai seguir, mesmo assim para o próximo if, verificar se input.value > segredo e como essa validação é false (afinal, o usuário acertou o valor) ele faz a instrução que está dentro do else, em seguida. Por isso, ele mostra uma mensagem de acerto e outra de erro, em seguida. Você precisa encadear um if else if para fazer uma validação só. Veja o código corrigido:

var segredo = Math.round(Math.random() * 10);
console.log(segredo);
var input = document.querySelector("input");
input.focus();

function verifica() {
  while (isNaN(input.value)) {
    alert("São aceitos apenas números, tente dnv");
    input.value = "";
    input.focus();
    return;
  }

  if (input.value == segredo) {
    alert("Você ACERTOU!");
  } else if (input.value > segredo) {
    alert("Vc errou... O número que eu pensei foi maior do que o número digitado");
  } else {
    alert("Vc errou... O número que eu pensei foi menor do que o número digitado");
  }

  input.value = "";
  input.focus();
}

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

button.onclick = verifica;

Dessa forma, ele vai validar numa tacada só. Se o usuário acertar, alerta que acertou, SENÃO, SE o segredo é maior, alerta que é maior, SENÃO, alerta que o segredo é menor, afinal se o número não é igual e nem maior, então só pode ser menor.

Eu só tenho a agradecer, pelas dicas e códigos. Vou por em prática oque eu acabei de aprender aqui, achei interessante a condição false e tmb "else if"