5
respostas

[Bug] Não atualiza as mensagens durante o loop.

Boa tarde Pessoal,

Estou com um problema que já foi relatado aqui no fórum, porém não funcionou! As minhas mensagens não aparecem no navegador durante o while, usei a dica dada pelo instrutor, de usar o alert ao invês do document.write, mas mesmo assim não vai. As mensagens aparecem na tela somente após as 3 tentativas ou depois que acerta.

5 respostas
<meta charset="utf-8">

<script type="text/javascript">
    
    function mostra(msg) {
        document.write("<big>" + msg + "</big>" + "<br><hr><br>");
        alert(msg)
    }

    function sorteia() {

        numero = Math.round(Math.random() * 100);
        return numero;
    }

    var numero_pensado = sorteia()
    console.log(numero_pensado)

    var chance = 1
    while(chance <= 3){
        var chute = parseInt(prompt("Digite seu chute: "));
        if (chute == numero_pensado) {
            mostra("Parabéns! Você acertou!");
            chance = 3
        } else {
            mostra("Você errou! O número era " + numero_pensado);
            if (chute > numero_pensado) {
                mostra("O número pensado é menor!")
            } else {
                mostra("O número pensado é maior!")
            }
        }
        chance++
    }
</script>

Oi Bruno, tudo bem?

Sinto muito que está com esse problema.

Vamos analisar algumas possíveis soluções e sugestões para resolver essa questão:

  • Posicionamento das Chamadas de Função: Certifique-se de que as chamadas das funções mostra e alert estejam posicionadas corretamente no seu código. Elas devem ser acionadas logo após as condições de verificação no seu loop while. Verifique se cada mensagem é exibida no momento adequado.
  • Estrutura do Loop: Certifique-se de que o loop while está corretamente estruturado. Verifique se ele está percorrendo o número esperado de vezes (no seu caso, 3 vezes para as três tentativas).
  • Ordem das Ações: Verifique se as mensagens de erro ("Você errou!") estão sendo exibidas corretamente sempre que o chute do usuário for diferente do número pensado. Isso pode ajudar a identificar se o loop está funcionando conforme o esperado.

Lembre-se de fazer pequenas modificações e testar seu código a cada passo, observando as mudanças de comportamento. Espero que essas sugestões ajudem a resolver o problema e a exibir as mensagens corretamente durante o loop.

Se ainda continuar com dúvidas, estou á disposição. Abraços e bons estudos!

Boa tarde! Estou tendo o mesmo problema que Bruno. Até pensei que pudesse ter sido erro meu, mas mesmo copiando o código disponível na aula, as mensagens não são exibidas após cada uma das tentativas. Só são exibidas em caso de acerto ou se as tentativas forem esgotadas. Em tempo, li alguns posts aqui no fórum onde a sugestão foi trocar a função mostra por alert, mas ninguém conseguiu explicar o porquê de na aula as mensagens serem mostradas logo após a execução, mas quando vamos tentar ele não procede das mesma forma, indiferente de ser cópia da solução oferecida na aula ou não. Será que alguém teria essa explicação e uma solução que fizesse o programa ter o mesmo funcionamento do vídeo? Desde já, obrigado pela atenção e presteza!

Olá, também verifiquei isso no meu código e entendi o que ocorre lendo em um outro post aqui do fórum. Dá uma olhada na transcrição da aula que foi atualizada com a explicação desse problema. Nela diz assim:

"Atenção: com atualizações, o Google Chrome agora só mostra as mensagens através de document.write() realizadas dentro de um loop, somente quando a página for carregada completamente, isto é, quando o loop termina. Neste caso, para efeito de aprendizagem, utilizem alert() no lugar de document.write()."

Acredito que isso aconteceu após alguma atualização que no momento que o instrutor gravava a aula, ainda não havia sido lançada. Vou deixar também o link do post onde encontrei a discussão e solução para esse problema. Espero ter ajudado...

Link do post aqui do fórum: https://cursos.alura.com.br/forum/topico-nada-aparece-na-tela-enquanto-a-janela-do-prompt-esta-em-execucao-260332#1203828

Olá! Obrigado pela resposta e pelos links para agilizar no acesso à informação! Ajudou muito!