• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

HTML Formular: Functionaufruf funktioniert nicht

cern54

Neues Mitglied
Hallo,

ich habe ein einfaches Formular, der nach der Eingabe von Gewicht und Größe, beim click auf den button eine Formal (mit hilfe der Funktion) berechnen soll.
Klingt einfach, tut aber nichts((

<html>
<head>
<script type="text/javascript">
function bmi_calc (weight, height)
{
var b = weigth/(height/100)^2;
alert("BMI Wert="+b);
}
</script>
</head>

<body>
<form name="Formular" onsubmit="return bmi_calc (weight, heigt)">
Gewicht: <input type="value" size="40" name="weight"><br>
Größe: <input type="value" size="40" name="height"><br>

<input type="submit" value="BMI berechnen" onclick="return bmi_calc (weight, height)">
<input type="reset" value="Abbrechen">
</form>
</body>
</html>

was ist hier so falsch, dass dieses Ding überhaupt nichts macht?

Help )))
 
Erster Fehler: Du hast das falsche Forum erwischt. Es ist eine JavaScript- und keine HTML-Frage. Habe dein Topic entsprechend verschoben.

Zweiter Fehler: Deine Funktion hat keinen return-Wert, dadurch wird das Formular einfach abgeschickt.

Also ergänze noch

Code:
return false;
 
Danke für dieschnelle Antwort: beide sin leider Anfängerfehler!
Also, habe

return false;

gleich nach
alert("BMI Wert="+b);

Zeile in die Funktion reinkopiert: leider berechnet die funktion immer noch nicht...
 
Was mir beim näheren hinschauen auch noch auffällt:

a) Nimm das onclick-Event beim Button weg. Bringt eh nichts wenn das Formular eigentlich abgeschickt wird/werden soll.

b) Die Werte für weight und heigth liest Du an keiner Stelle aus. Wenn Du das Formular nur so und nicht flexibel haben willst, entferne die Werte aus dem Funktionsaufruf, ergänze bei den Formularfeldern width und height als ID und schreibe innerhalb der JavaScript-Funktion dann noch

Code:
var width = parseInt(document.getElementById("width").value);
var height = parseInt(document.getElementById("height").value);

Dadurch würde die Funktion überhaupt erst auf die eingegebenen Werte zugreifen können.

Tipp: um sicherzustellen, dass dort auch mit tatsächlich passenden Werten gerechnet wird, solltest Du auch noch prüfen, ob auch die passenden Werte in die Felder eingegeben wurden. Also ob es eine Zahl mit oder ohne Komma oder Punkt ist oder einfach nur Buchstaben (mit denen man eh nicht rechnen kann).
 
hmmm... nun habe ich onclick weggeputzt,
So sieht es jetzt aus und rechnet immer noch nicht:


<html>
<head>
<script type="text/javascript">

function bmi_calc ( height, weight )
{
var width = parseInt(document.getElementById("weight").value);
var height = parseInt(document.getElementById("height").value);
var bmi = weigth/(height/100)^2;
alert("bmi = "+bmi);
return false;
}
</script>
</head>

<body>
<p><h3> Body Mass Index Rechner </h3></p>
<form name="BMI Berechnung" action="">

<p>
<br>
<input type="text" size="40" maxlength="70" id="weight" name="weight"> - Groesse
<br>
<input type="text" size="40" maxlength="70" id="weight" name="height"> - Gewicht
<br>
<input type="submit" value="Berechnen sie doch BMI" onsubmit="return bmi_calc ( height, weight )">

</p>
</form>
</body>
</html>


Validierung mach ich später mal, wenn ich es mit dieser Berechnung hingekriegt habe ))
 
soll ^2 = hoch 2 sein ?
dann muss es natürlich so sein
Code:
var bmi = weight / (Math.pow((height/100),2));

#Edit: Ich weiss jetzt nicht ob die Formel so stimmt für den BMI. Mein Code würde rechnen weight / (Ergebnis aus height / 100 und das ins Quadarat)
 
Ich hatte gesagt du sollst onclick entfernen. Nicht, dass Du das onsubmit in das input-Element tust - was fehlerhaft ist und natürlich nicht funktionieren kann. Denn über das onsubmit() innerhalb des <form>-Elements wird deine Funktion zur Berechnung aufgerufen.

Und bitte verwende im Forum Code-Tags wenn Du Quellcode zeigst.
 
Code:
function bmi_calc ()
{
var width = parseInt(document.getElementById("weight").value);
var height = parseInt(document.getElementById("height").value);

var bmi = width / (Math.pow((height/100), 2));
alert("bmi = "+ bmi);
}

Code:
<form name="BMI Berechnung" action="#" method="post" onsubmit="return false;">

<p>
<br>
<input type="text" size="40" maxlength="70" id="height" name="weight"> - Groesse
<br>
<input type="text" size="40" maxlength="70" id="weight" name="height"> - Gewicht
<br>
<input type="submit" value="Berechnen sie doch BMI" onclick="bmi_calc();">

</p>
</form>
 
sorry,
aber
in diesem Ritch-text Feld (dass sich beim klicken auf "Anzwort" öffnet) sehe ich keine möglichkeit für code... ?
 
[ code ] dein code [ / code ]

Ohne leerzeichen.

Btw. eins über dir steht die Lösung.

#Edit: Wieso hast du bei - Groesse die ID weight (engl, Gewicht) und bei - Gewicht height (eng. Höhe) ?
 
super, danke!
ha,
weil ich nach hin-und her-editieren durcheinander gekommen bin. Natürlich muss das Gewicht "weight" und die Größe "height" heissen )))

Jetzt tut`s!!!
Jetzt mach ich noch die Validierung der Eingabenfelder rein...
 
Also, falls es jemand braucht: mit validierungsprüfung sieht dasganze so aus:
Code:
<html> 
<head> 
<script type="text/javascript">
function bmi_calc ()
{
var width = parseInt(document.getElementById("weight").value);
var height = parseInt(document.getElementById("height").value);
if (document.getElementById("weight").value == "") 
{ alert("Bitte Gewicht in kg eingeben!");  document.Formular.height.focus(); return false; } 
if (document.getElementById("height").value == "") 
{ alert("Bitte Größe in cm eingeben!"); document.Formular.weight.focus(); return false; }
var bmi = width / (Math.pow((height/100), 2));
alert("Ihr BMI = "+ bmi);
}
</script> 
</head>
<body> 
<h1>JavaScript und Funktionen</h1> 
<form name="BMI Berechnung" action="#" method="post" onsubmit="return false;">
<p>
<br>
<input type="text" size="40" maxlength="70" id="weight" name="weight"> - Gewicht
<br>
<input type="text" size="40" maxlength="70" id="height" name="height"> - Groesse
<br>
<input type="submit" value="Berechnen sie doch BMI Wert" onclick="bmi_calc();">
</p>
</form>
</body> 
</html>

Ich hoffe, dass code jetzt auch richtig angezeigt wird.
 
Zurück
Oben