Avatar billede coalyuju Nybegynder
17. november 2005 - 21:51 Der er 3 kommentarer

Javascript til BMI

Hej, jeg sidder her og skal lave en opgave om sundhed, og derfor skal jeg bl.a. komme ind på BMI osv., og her tænkte jeg på at score nogle ekstra points ved at lave en hjemmeside, som kunne udregne den for de dovne - dvs. lærerne - men det vil ikke rigtig fungere. Jeg har prøvet på tonsvis af forskellige måder efterhånden, men intet hjælper, så jeg vil forsøge at spørge jer til råds.

Formlen for udregning af BMI er følgende: Vægt/Højt i 2.

Et eksempel kunne være en gut på 1,6 m og 70 kg ville se sådan her ud: 70/1,6*16 = 27,3.

Jeg har gjort det på følgende måde med "vae" som vægt, "hoj" som højde og "av" som BMI.

<script language="javascript">
    function calculate_onclick()
    {    var av = parseInt(document.cykel.vae.value) / (parseInt(document.cykel.hoj.value) * parseInt(document.cykel.hoj.value));
        document.cykel.av.value = Math.round(av * 100) / 100;
       
    }
    </script>

---------

Jeg håber I kan hjælpe mig, da jeg skal aflevere i morgen, og jeg er meget ivrig efter at få det til at virke.

På forhånd tak.
Avatar billede cayman Nybegynder
18. november 2005 - 11:47 #1
parseInt .. er det din egen function. Er det v/(h^2) eller (v/h)^2 ..

Istedet for document.cykel.av.value (virker kun i IE) bør du skrive
var av = document.getElementById('av') ; (Kræver at du angiver en id i inputfeltet)
av.value=...
Avatar billede olebole Juniormester
18. november 2005 - 17:23 #2
<ole>

"document.cykel.av.value (virker kun i IE)" ... vrøvl!  :)

Hvis formen hedder 'cykel' og feltet hedder 'av', er det da en helt valid adressering i alle browsere - forudsat det står skrevet i et HTML-dokument.

/mvh
</bole>
Avatar billede roenving Novice
22. november 2005 - 00:25 #3
-- et ofte set problemfelt er benyttelse af kommaer i tal-angivelser, da javascript alene opererer med punktum som decimal-separator !-)

Men f.eks. sådan:

<script type="text/javascript">
function calcBMI(f){
  var v = f.vae.value.replace(/,/,".");
  var h = f.hoj.value.replace(/,/,".");
  if(!v.match(/^\d+(\.\d+)?$/)){
    alert("Angiv vægten i (decimal-) tal !-)");
    f.vae.select();
    f.vae.focus();
    return false;
  }
  if(!h.match(/^\d+\.\d+$/)){
    alert("Angiv højden i decimal-tal i meter !-)");
    f.hoj.select();
    f.hoj.focus();
    return false;
  }
  var bmi = Math.round(v/(h*h)*10)/10;
  document.getElementById("BMI").firstChild.nodeValue = bmi
}
</script>

<form>
Vægt: <input type="text" name="vae" style="text-align:right;">&nbsp;kg<br>
Højde: <input type="text" name="hoj" style="text-align:right;">&nbsp;m (OBS. Hele meter, f.eks. 1.81 !-)<br>
<button onclick="calcBMI(this.form);return false;">Beregn BMI</button>
</form>
Beregnet BMI: <span id="BMI">&nbsp;</span>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester