Berechnungen mit Formulare
Uwe Jähnel
- javascript
Kann mir vieleicht da einer helfen? Suche ein JavaScript wo man in dieser Art rechnen kann.
Ich treffe z.Bsp. folgende Entscheidung: Bitte wählen: 150, Radio1: +20, Radio 2: -15 und Radio 3: +5
Aufgabe müsste lauten: 150+10,5+20-15+5 Ergebnis ist: 170,5
Ich sage im voraus schon einmal Danke
Auszug aus Formular:
<form>
<table border="1" cellpadding="3" cellspacing="0">
<tr>
<td align="right" valign="top" style="font-size: 13px; font-family: Verdana,sans-serif; font-weight: bold">
Bitte wählen:</td>
<td style="font-size: 13px; font-family: Verdana,sans-serif; font-weight: bold">
<select name="Zahl" class="Auswahl" size="1">
<option value="100+20,5">100</option>
<option value="150+10,5">150</option>
<option value="200+5,5">200</option>
<option value="250+2,5">250</option>
</select>
</td>
</tr>
<tr>
<td align="right" valign="top" style="font-size: 13px; font-family: Verdana,sans-serif; font-weight: bold">
Radio 1</td>
<td style="font-size: 13px; font-family: Verdana,sans-serif; font-weight: bold">
<input type="radio" class="Radio" name="+20" value="+20"> +20<br>
<input type="radio" class="Radio" name="-10" value="-10"> -10</td>
</tr>
<tr>
<td align="right" valign="top" style="font-size: 13px; font-family: Verdana,sans-serif; font-weight: bold">
Radio 2</td>
<td style="font-size: 13px; font-family: Verdana,sans-serif; font-weight: bold">
<input type="radio" class="Radio" name="+25" value="+25"> +25<br>
<input type="radio" class="Radio" name="-15" value="-15"> -15</td>
</tr>
<tr>
<td align="right" valign="top" style="font-size: 13px; font-family: Verdana,sans-serif; font-weight: bold"> Radio 3</td>
<td style="font-size: 13px; font-family: Verdana,sans-serif; font-weight: bold">
<input type="radio" class="Radio" name="+5" value="+5"> +5<br>
<input type="radio" class="Radio" name="-8" value="-8"> -8</td>
</tr>
<tr>
<td align="right" style="font-size: 13px; font-family: Verdana,sans-serif; font-weight: bold">Formular:</td>
<td style="font-size: 13px; font-family: Verdana,sans-serif; font-weight: bold">
<input type="submit" class="Button" value="Berechnen">
</td>
</tr>
<tr>
<td align="right">Ergebnis:</td>
<td>
</td>
</tr>
</table>
</form>
Hinweis: Dezimal-Trennzeichen muss der Punkt sein nicht das Komma und in den namen für die Radio-Buttons keine Zahlen verwenden --> so wäre ok name="r1".
<script language="JavaScript" type="text/javascript">
<!--
function rechnen()
{
var z1 = document.forms[0].elemets['Zahl'].value;
var z2 = document.forms[0].elemets['r1'].value;
var z3 = document.forms[0].elemets['r2'].value;
var z4 = document.forms[0].elemets['r3'].value;
var z5 = document.forms[0].elemets['r4'].value;
var summe = z1 + z2 + z3 + z4 + z5;
alert(summe);
}
//-->
</script>
hi,
var summe = z1 + z2 + z3 + z4 + z5;
wird alle werte schön aneinanderreihen, aber nicht aufsummieren - die values von formularfeldern sind nämlich strings.
gruss,
wahsaga
Hi wahsaga,
wird alle werte schön aneinanderreihen, aber nicht aufsummieren - die values von formularfeldern sind nämlich strings.
*Schäm* dann z.B. so
<script language="JavaScript" type="text/javascript">
<!--
function rechnen()
{
var z1 = document.forms[0].elements['Zahl'].value;
var z2 = document.forms[0].elements['r1'].value;
var z3 = document.forms[0].elements['r2'].value;
var z4 = document.forms[0].elements['r3'].value;
var z5 = document.forms[0].elements['r4'].value;
var summe = eval(z1 + z2 + z3 + z4 + z5);
alert(summe);
}
//-->
</script>
Gruß
René
hi,
*Schäm* dann z.B. so
var summe = eval(z1 + z2 + z3 + z4 + z5);
gleiches problem: zuerst werden die _strings_ verkettet, ergibt also einen langen string, in dem alle zahlen hintereinander stehen.
daraus kann auch eval() nichts anderes mehr machen.
vorher mit parseInt()/parseFloat() die strings in zahlen umzuwandeln, wäre die saubere methode.
gruss,
wahsaga
Hi,
in seinem Fall hätte es aber funktioniert da die Werte ja schon fest vorgegeben sind.
bei parseInt() ist das ergebnis 100 bei parseFloat ebenfalls. Bei eval = 127,5 was auch richtig ist.
Ich Danke euch für eure Bemühungen, komme aber nicht so richtig klar. Bin absoluter Anfänger in Javascript.