Henrique,
seu código tem uns pequenos problemas. Pegue seu código original;
Esta linha:
exibir(nome + ", o seu IMC é: " + imc);
deve ser modificada (só o "+ imc"), e colocada abaixo e fora do segundo while, assim:
exibir(nome + ", o seu IMC é: " + calculaImc(pesoInformado, alturaInformada));
Para evitar o erro de cálculo, deve excluir estas duas linhas:
pesoInformado = pesoInformado + 1;
alturaInformada = alturaInformada + 1;
Do jeito que está, se responder com algo não numérico à primeira pergunta (peso), ela passa à segunda pergunta (altura), e só depois volta para a primeira pra solicitar de novo um peso que seja numérico.
Para evitar isto, deve atribuir às variáveis um valor não numérico na declaração das duas variáveis, assim:
var pesoInformado = "X";
var alturaInformada = "X"
ao invés de atribuir duas vezes valores a elas com prompt.
E só como complemento, pode implementar um arredondamento ao valor calculado de imc, com .toFixed(2):
O código, sem alterar sua lógica, com estas alterações, ficaria assim:
<meta charset="UTF-8">
<script>
function pulaLinha() {
document.write("<br><br>");
}
function exibir(frase) {
pulaLinha();
document.write("<big>" + frase + "</big>");
}
function calculaImc (pesoInformado, alturaInformada) {
var imc = pesoInformado / (alturaInformada * alturaInformada);
//return imc;
return imc.toFixed(2);
}
var nome = prompt("Informe o seu nome");
//var pesoInformado = prompt(nome + ", informe seu peso");
var pesoInformado = "X";
//var alturaInformada = prompt(nome + ", informe sua altura");
var alturaInformada = "X";
var imc = calculaImc(pesoInformado,alturaInformada);
//exibir(nome + ", o seu IMC é: " + imc);
while( isNaN(pesoInformado) ) {
pesoInformado = prompt(nome + ", informe seu peso");
//pesoInformado = pesoInformado + 1;
}
while( isNaN(alturaInformada) ) {
alturaInformada = prompt(nome + ", informe sua altura");
//alturaInformada = alturaInformada + 1;
}
exibir(nome + ", o seu IMC é: " + calculaImc(pesoInformado,alturaInformada));
if(imc < 18.5) {
exibir("Você está abaixo do recomendado");
}
if(imc >= 18.5 && imc <= 35) {
exibir("Seu IMC está excelente!");
}
if(imc > 35) {
exibir("Você está acima do recomendado");
}
</script>
pode apagar as linhas comentadas com //.
Bons estudos!