juninhodagavioes Postado Dezembro 14, 2008 Denunciar Share Postado Dezembro 14, 2008 (editado) 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 Dezembro 14, 2008 por juninhodagavioes Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 KaKarotto Postado Dezembro 14, 2008 Denunciar Share Postado Dezembro 14, 2008 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 juninhodagavioes Postado Dezembro 14, 2008 Autor Denunciar Share Postado Dezembro 14, 2008 (editado) Na verdade, eu coloco qualquer coisa lá e aparece "NaN", inclusive números separados por ponto :( Editado Dezembro 14, 2008 por juninhodagavioes Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 KaKarotto Postado Dezembro 14, 2008 Denunciar Share Postado Dezembro 14, 2008 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) } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 juninhodagavioes Postado Dezembro 14, 2008 Autor Denunciar Share Postado Dezembro 14, 2008 É 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> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Dezembro 14, 2008 Denunciar Share Postado Dezembro 14, 2008 Olha o código:alert(peso/altura*altura)Está errado !Pense assim:peso/altura*altura(peso/altura)*alturaVocê divide o peso pela altura e depois multiplica de novo !Como altura/altura é sempre 1, o resultado será o próprio peso ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 KaKarotto Postado Dezembro 15, 2008 Denunciar Share Postado Dezembro 15, 2008 Isso, o operador * tem precedência sob o operador /.O Jonathan colocou os parênteses para dar prioridade à conta de dividir para posteriomente multiplicar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 juninhodagavioes Postado Dezembro 15, 2008 Autor Denunciar Share Postado Dezembro 15, 2008 (editado) Obrigado, agora deu certo, mas só mais 1 dúvida, para o resultado não dar por exemplo: 12.23243244243, como faz para aparecer apenas os dois primeiros números decimais, assim: 12.23? Vlw! Editado Dezembro 15, 2008 por juninhodagavioes Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 KaKarotto Postado Dezembro 15, 2008 Denunciar Share Postado Dezembro 15, 2008 Numero.toFixed(2)toFixed fixa o número de casas decimais que deseja usar. No caso acima, 2 casas. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 juninhodagavioes Postado Dezembro 15, 2008 Autor Denunciar Share Postado Dezembro 15, 2008 Ok, mas eu uso esse código após o alert? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 KaKarotto Postado Dezembro 15, 2008 Denunciar Share Postado Dezembro 15, 2008 var resultado = (peso/altura)*altura resultado = resultado.toFixed(2) alert( resultado ) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 juninhodagavioes Postado Dezembro 15, 2008 Autor Denunciar Share Postado Dezembro 15, 2008 Valeu! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Dezembro 15, 2008 Denunciar Share Postado Dezembro 15, 2008 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 primeiroOu seja:peso/altura*altura = (peso/altura)*(altura)Resolvido Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
juninhodagavioes
Fiz esse código pra calcular o IMC, mas quando aperto "Calcular IMC", o alert aparece como "NaN" :(
Editado por juninhodagavioesLink para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
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.