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

Mostrar o IMC depois de digitar o 1 usuário

Pessoal, eu fiz um programinha do IMC utilizando comando prompt e o laço de repetição For. Toda vez que ele vai passar para próximo usuário do IMC eu gostaria que ele aparecesse no explorer o 1º imc calculado e ele não faz isso. Ele parece que guarda todas as informações e exibe tudo no final. onde errei?

<meta charset="utf-8"/>
<script>
    //calculo do IMC com condições

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

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

    function calculoImc(peso , altura){
        return peso / (altura * altura);
    }

    var quantidade = prompt("Informe a quantidade de pessoas para calculo do IMC!");

    for(var contador = 1; contador <= quantidade; contador++){

        var nome = prompt("Informe seu nome:");
        var peso = prompt("Informe seu peso:");
        var altura = prompt("Informe sua altura:");

        var imc = calculoImc(peso , altura);
        mostra("O IMC do aluno " + nome + " é:" + imc);

    }

</script>
2 respostas

Olá Étori,

Você não vê alteração alguma na página enquanto todo script termina, certo?

A razão pela qual você não está vendo esta alteração, basicamente, é que o navegador ainda está executando o script. Enquanto algum JavaScript está sendo executado nada na página vai sofrer alteração. Se, durante o script, você fizer várias alterações o navegador não vai desperdiçar recursos na renderização de todas as pequenas mudanças dentro do script, mas junta todas as alterações e no final do script aplica tudo de uma vez só.

"Mas, isso não resolve o meu problema." O que fazer então?

Uma opção que você tem é mostrar o resultado com um alert:

function mostra(frase){
        alert(frase);
 }
solução!

Olá Étori!

Isso ocorre porque o document.write() reescreve toda a sua página de uma única vez quando o script chega ao final. Ele é utilizado aqui apenas para fins didáticos, com o seu avanço na linguagem JavaScript você verá maneiras bem mais eficientes de fazer isso que você deseja.

No momento, a opção que o Rafael escreveu acima é válida para você verificar se o código realmente funciona. Troque a função mostra() com o document.write() pela função mostra() abaixo. Neste caso, você não vai precisar da função pulaLinha():

function mostra(frase){
        alert(frase);
 }

Abraços e sucesso nos estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software