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

Navegador não exibe a mensagem quando dou ok no prompt

Fala pessoal, estou na aula: https://cursos.alura.com.br/course/logica-programacao-javascript-html/task/17740

O código é o seguinte:

<meta charset="UTF-8">
<script>

    function pulaLinha() {

        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    var numeroPensado = sorteiaNum(10);
    var chances = 1

    while(chances <= 3){
    var chute = parseInt(prompt("Já pensei. Qual você acha que é?"));

        if(chute == numeroPensado) {
            mostra("Uau! Você acertou, pois eu pensei no " + numeroPensado);
            break;

        } else {
            mostra("Você errou!")
        }
        chances++
    }

    mostra ("Eu tinha pensado no " + numeroPensado)


    function sorteiaNum(n){
        var n = Math.round(Math.random()* n)
        return n
    }

</script>

Durante a aula, o navegador do professor, quando erra o número, exibe na tela já a mensagem de erro no HTML, em torno dos 4:00 de vídeo.

O meu navegador, porém, espera eu dar os 3 "ok" no prompt para depois imprimir as 3 mensagens de erro. O que eu to fazendo de errado?

To usando o Chrome

2 respostas
solução!

Olá, Igor, tudo bem?

Na verdade, não há nada de errado! Isso realmente é um comportamento possível quando usamos funções como alert e prompt. É como se as caixas de diálogo fossem mostradas antes de outras alterações na tela.

Por exemplo, se você testar o seguinte:

alert("Olá 1");
document.write("Olá 1<br>");
alert("Olá 2");
document.write("Olá 2<br>");
alert("Olá 3");
document.write("Olá 3<br>");

Provavelmente acontecerá o mesmo, e as mensagens dos document.write aparecerão apenas depois dos alert.

Para o seu caso, uma solução é trocar as funções mostra por alert! Assim a mensagem aparecerá para o usuário depois que ele digitar algum número.

Espero ter ajudado! Se tiver mais dúvidas, estaremos aqui para te auxiliar! Bons estudos :)

Beleza, obrigado!