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

Página carregada apenas no final do "while" (Vídeo 4 - Aula 7 - Repita Tarefas)

Ao executar o código abaixo, a página é carregada somente quando o "while" termina, depois das 3 tentativas ou quando houver um ACERTO, diferentemente do que ocorre no vídeo quando a função mostra() é chamada e o seu resultado correspondente é mostrado na tela a cada tentativa.

<meta charset="UTF-8">

<h1>Jogo de Adivinhação</h1>

<script>

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

  function mostra(texto){
    document.write(texto);
    pulaLinha();
  }

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

  var numeroLimite = parseInt(prompt("Digite o número máximo para o sorteio:"));
  var numeroPensado = sorteia(numeroLimite);

  var tentativas = 1;

  while(tentativas <= 3){
    var chute = parseInt(prompt("Digite seu chute:"));
    if(chute == numeroPensado){
      mostra("Você ACERTOU, o número pensado era " + numeroPensado);
      break;
    } else{
      mostra("Você ERROU!");
    }
    tentativas++;
  }

  mostra("FIM");

</script>

Isto ocorre quando utilizo o Google Chrome. Fiz o teste utilizando o Firefox e o programa rodou conforme o vídeo, mostrando na tela os resultados parciais de cada tentativa. Existe uma forma de evitar que isso ocorra, ou é algo que realmente dependa do navegador utilizado?

5 respostas

André analisando seu código esta tudo certo. Realmente muito estranho isso de navegador, eu deixo o meu como o chrome como o padrão e nunca ocorreeu erro desse tipo.

Troque para alert no lugar de mostra e faça um teste. Funciona? Daí eu te explico o que pode ter ocorrido.

Aguardo seu teste.

Olá Flávio, com o "alert" funciona sim. Já havia testado e daí deduzi que o problema poderia ser com o "document.write". Pelo que pesquisei o uso do "document.write" parece não ser uma boa prática. Procurei por alternativas e cheguei ao "innerHTML", que pareceu-me uma forma interessante, mas não consegui utilizá-lo. Espero aprendê-lo em cursos mais avançados. Existe alguma outra alternativa?

solução!

Oi André! No curso de lógica preferi não aprofundar na linguagem JavaScript em favorecimento do ensino da lógica de programação. Ou seja, você aprendeu o mínimo necessário de uma linguagem para criar programas que testem sua habilidade de lógica adquirida. O document.write fez esse papel bem. Aliás, se você quiser partir para outras linguagens, a bagagem adquirida abrirá novos caminhos.

Se você se identifica com a linguagem JavaScript e se quiser continuar a se aprimorar nela, você verá soluções mais elegantes e mais "JavaScript" para resolver o problema de apresentação de informação.

Nesse ínterim, depois que terminar o curso de lógica I, há outro curso para prepará-lo ainda melhor para o que esta por vir. É um curso novo regravado por mim:

https://cursos.alura.com.br/course/logica-programacao-pratica-com-desenho-animacoes-em-jogo

Sucesso e bom estudo meu aluno!

Obrigado Flávio, parabéns pelo curso e vou aprimorar-me mais em JavaScript sim! Abraços!