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

Alguém pode me ajudar a encontrar o erro

<!DOCTYPE html>
<meta charset="UTF-8">
<input>
<button>
    Sortear!
</button>

<script>
    function pulaLinha(){
        document.write("<br>");
    }
    function mostra(frase){
        mostra(frase);
    }
    function sorteia(){
        return Math.round(Math.random()*10);

    }
    function povoaArray(quantidade){
        var array = [];
        numero = 1;

        while(numero<=quantidade){
            var numeroAleatorio = sorteia();
            if(numeroAleatorio!=0){
                var achou = false;

                for (var posicao = 0; posicao < array.length; posicao++){
                    if(array[posicao] == numeroAleatorio){
                        achou = true;
                        break;
                    }
                }
                if(achou==false){
                    array.push(numeroAleatorio);
                    numero++;

                }

            }
        }
        return array;

    }


    var segredos = povoaArray(5);
    console.log(segredos);

    var numEscolhido = document.querySelector("input");
    numEscolhido.focus();
    numEscolhido.value = "";  

    function verifica(){
        var achou = false;
        for (var posicao = 0; posicao < array.length; posicao++){
            if(array[posicao] == numEscolhido.value){
                alert("Você acertou!");
                achou = true;
                break; 
            }
        }  
        if(achou==false){
            alert ("Errroouu!");
        }  
    }

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


</script>
2 respostas
solução!

Quando uma variável é definida dentro de uma função, ela tem o escopo local, ou seja, ela pode apenas ser acessada dentro da função, você estava utilizando 'array' na função verifica(), quando deveria utilizar a variável 'segredos' que recebeu o array gerado dentro da função povoaArray().

<!DOCTYPE html>
<meta charset="UTF-8">
<input>
<button>
    Sortear!
</button>

<script>
    function pulaLinha(){
        document.write("<br>");
    }

    function mostra(frase){
        document.write(frase); /* xx Antes: você estava chamando a função na
        criação da mesma -> mostra(frase);*/
    }

    function sorteia() { 
       return Math.round(Math.random() * 10);
    }

    function povoaArray(quantidade){
        var array = [];
        numero = 1;
        while(numero<=quantidade){
            var numeroAleatorio = sorteia();
            if(numeroAleatorio !== 0){
                var achou = false;
                for (var posicao = 0; posicao < array.length; posicao++){
                    if(array[posicao] == numeroAleatorio){
                        achou = true;
                        break;
                    }
                }
                if(achou==false){
                    array.push(numeroAleatorio);
                    numero++;
                }
            }
        }
        return array;
    }

    var segredos = povoaArray(5);
    console.log(segredos);
    var numEscolhido = document.querySelector("input");
    numEscolhido.focus();
    numEscolhido.value = "";  

    function verifica(){
        var achou = false;
        for (var posicao = 0; posicao < segredos.length; posicao++){ /* xx Antes: estava
        utilizando array.length, e a variável array foi definida dentro de uma função, então aqui ela nem pode ser acessada por causa do escopo */
            if(segredos[posicao] == numEscolhido.value){ // Aqui tbm array -->> segredos
                alert("Você acertou!");
                achou = true;
                break; 
            }
        }  
        if(achou == false){
            alert("Errroouu!"); // xx Antes: estava com espaço-> alert ("Errroouu!");
        }  
    }

    var checar = document.querySelector("button");
    checar.onclick = verifica;
</script>

vdd, que vacilo.... morri de procurar o erro! Mas programar é isso mesmo, obrigada pela solução.