2
respostas

IndexOf

Estou tentando criar um código onde o sistema sorteie cinco numeros aleatorios entre 1 e 10 e o usuário tentaria cadastrar o valor 3 vezes ou até acertar. Porém no segundo bloco de script eu tentei fazer uma busca com Indexof e o sistema não acha o valor, sempre retornando -1 mesmo que eu veja os valores no console. O que eu estou fazendo de errado?

Teste sua perícia

<script>
   let numTentativas = 0;
   const numMaxTentativas = 3;

   function veriTentativas(){
     ** var numDigitado = document.getElementById("edtNumero").value;**
      console.log(numDigitado);
      numTentativas++;

      if (verificaTentativa(numDigitado) == true) {
        alert("Parabéns, você descobriu um dos numeros");
      }
      else {
         if (numTentativas < numMaxTentativas){
          document.getElementById("edtNumero").value = "";
          document.getElementById("edtNumero").focus();
         } 
         else {
            alert("Que pena, você não conseguiu depois de três tentativas.");
            document.getElementById("edtNumero").disabled = true;
         }

      }
   }

  function verificaTentativa(loNumDigitado){
    var idVeriNum = numSorteados.indexOf(loNumDigitado);
    console.log(numSorteados.length);
    console.log(numSorteados[0]);
    console.log(loNumDigitado);
    console.log(idVeriNum);

    if (idVeriNum>-1) {
      return true;
    }
    else {
      return false;
    }
  }

</script>
2 respostas

Ahn... já descobri o que é... eu tenho que converter o valor do Indexof para numero pois o retorno do edtNumero é string.

var idVeriNum = numSorteados.indexOf(Number(loNumDigitado));

Oi, Denilson!

Boa, mandou bem, fico feliz que já percebeu que indexOf precisava comparar com um número, agora é só garantir que o array numSorteados realmente contém números e que verificaTentativa está recebendo o valor convertido corretamente. Se tudo estiver certo, o código deve funcionar sem problemas.

Fico à disposição. Abraços e bons estudos!