Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problema ao calcular IMC!


juninhodagavioes

Pergunta

Fiz esse código pra calcular o IMC, mas quando aperto "Calcular IMC", o alert aparece como "NaN" :(

<script>
var peso=parseFloat(document.form1.text1.value);
var altura=parseFloat(document.form1.text2.value);
function total(){
alert(peso/altura*altura)}
</script>
<body>
<form name="form1">
<b>Peso</b><br><input type="text" name="text1" size=8><br>
<b>Altura</b><br><input type="text" name="text2" size=8><br><p>
<input type="button" value="Calcular IMC" onclick="total()">
</form>
</body>

Editado por juninhodagavioes
Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

No mínimo você está usando vírgulas ao invés de pontos.

As linguagens de programação usam um sistema númerico internacional, não existem vírgulas apenas pontos para designar as casas decimais.

Link para o comentário
Compartilhar em outros sites

  • 0

Então você está tentando acessar os elementos do form antes mesmo deles serem criados.

Faça assim na sua função de total:

function total(){
    var peso=parseFloat(document.form1.text1.value);
    var altura=parseFloat(document.form1.text2.value);
    alert(peso/altura*altura)
}

Link para o comentário
Compartilhar em outros sites

  • 0

É tá aparecendo o alert, mas no alert aparece o número do peso, e não o resultado do IMC. Olha o código:

<script>
function total(){
    var peso=parseFloat(document.form1.text1.value);
    var altura=parseFloat(document.form1.text2.value);
    alert(peso/altura*altura)
}
</script>
<body>
<form name="form1">
<body bgcolor=black>
<center><b><h2><font color=red>Índice de Massa Corporal</h2></b></font></center>
<center><b><font color=white>Peso</b><br><input type="text" name="text1" size=8><br></center>
<center><b><font color=white>Altura</b><br><input type="text" name="text2" size=8><br><p></center>
<center><input type="button" value="Calcular IMC" onclick="total()">
</center></form>
</body>

Link para o comentário
Compartilhar em outros sites

  • 0

Isso, o operador * tem precedência sob o operador /.

O Jonathan colocou os parênteses para dar prioridade à conta de dividir para posteriomente multiplicar.

Link para o comentário
Compartilhar em outros sites

  • 0

Numero.toFixed(2)

toFixed fixa o número de casas decimais que deseja usar. No caso acima, 2 casas.

Link para o comentário
Compartilhar em outros sites

  • 0
Isso, o operador * tem precedência sob o operador /.

O Jonathan colocou os parênteses para dar prioridade à conta de dividir para posteriomente multiplicar.

Na verdade os dois tem a mesma prioridade !

O que vier primeiro vai ser calculado primeiro

Ou seja:

peso/altura*altura = (peso/altura)*(altura)

Resolvido

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...