Archivlink: javarea.de Forum > JavaScript > zusammen zählen mit javascript
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > zusammen zählen mit javascript

Pages: [1]

geschrieben von markus69 am 14.10.2005 - 07:01
hallo

ich habe verschiedene textfelder mit denen eine summe zusammengezählt werden kann. sind alle felder ausgefüllt funktioniert es. es ist jedoch so, das felder leer bleiben können (im beispiel feld 4), doch dann funktioniert das folgende javascript nicht mehr:

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
<form method="POST" action="--WEBBOT-SELF--" name="frm">
  <hr>
  <table border="0" width="100%">
    <tr>
      <td width="35%">Menge</td>
      <td width="65%">&nbsp;<input type="text" name="zahl1" size="41" value="12"></td>
    </tr>
    <tr>
      <td width="35%">Stückpreis</td>
      <td width="65%">&nbsp;<input type="text" name="zahl2" size="41" value="3"></td>
    </tr>
    <tr>
      <td width="35%">Stückpreis</td>
      <td width="65%">&nbsp;<input type="text" name="zahl3" size="41" value="3"></td>
    </tr>
	<tr>
      <td width="35%">Stückpreis</td>
      <td width="65%">&nbsp;<input type="text" name="zahl4" size="41" value=""></td>
    </tr>
    <tr>
      <td width="35%">Total in CHF</td>
      <td width="65%">
	  <script language="JavaScript">
  <!--
function calc() {
inp="out=" + document.frm.zahl1.value + "+" + document.frm.zahl2.value + 
"+" + document.frm.zahl3.value + "+" + document.frm.zahl4.value
eval(inp);
        document.frm.zahl5.value=out;
  }
//-->
</script>

<a href="javascript:calc()"> <img
      src="../../images/sym_calc.gif" border="0" width="32" height="32"></a><br>
      &nbsp;<br>
      <input type="text" name="zahl5" size="41"></td>
    </tr>
    <tr>
      <td width="35%">...</td>
      <td width="65%">...</td>
    </tr>
  </table>
</form>


wie kann ich das lösen? wäre für hilfe dankbar!

geschrieben von okley am 14.10.2005 - 08:31
du machst einfach eine abfrage, wo du jeweils die inhalte (.value) der felder prüfst und in eine variable speicherst. wenn das feld leer ist schreibst du eben eine 0 in die variable.
und versuch das eval zu umgehen. ist eine nicht schöne lösung!

geschrieben von markus69 am 14.10.2005 - 08:35
danke für den tipp. schön oder nicht, solangs funktioniert...

javascript ist leider noch nicht wirklich meine heimat. hast du ev. ein kleines beispiel oder tutorial-tipp wo ich sowas nachschlagen könnte?

geschrieben von Hawk am 14.10.2005 - 13:16
hier eine Anregung.

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
<script language="JavaScript">
  <!--
function calc() {
var zahl1 = Math.round(document.frm.zahl1.value);
var zahl2 = Math.round(document.frm.zahl2.value);
var zahl3 = Math.round(document.frm.zahl3.value);
var zahl4 = Math.round(document.frm.zahl4.value);

if(zahl4 == "") {

 document.frm.zahl5.value = zahl1 + zahl2 + zahl3;
 }
 else {

  document.frm.zahl5.value = zahl1 + zahl2 + zahl3 + zahl4;
  }
  }
-->
</script>


Ich hoffe es hilft

geschrieben von okley am 14.10.2005 - 14:44

geschrieben von weisnix am 14.10.2005 - 21:50
Jo,

da habe ich auch ne Lösung. Funktioniert mit der neuen Browsergeneration. In wie weit das die älteren mitmachen kann ich nicht sagen, habe keinen zur Verfügung.

Wenn man den Inhalt mit sich selbst multipliziert gibt es automatisch einen Nullwert.

Beispiel:
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
<html>
<head>
<title></title>
<script type="text/javascript">
<!--
function rechne () {
var wert1 = document.Testform.T1.value;
var wert2 = document.Testform.T2.value;
var wert3 = document.Testform.T3.value;
var wert4 = document.Testform.T4.value;
document.Testform.T5.value = (1*wert1)+(1*wert2)+(1*wert3)+(1*wert4);
}
-->
</script>
</head>
<body>
<form name="Testform">
  <p><input type="text" name="T1" size="20"></p>
  <p><input type="text" name="T2" size="20"></p>
  <p><input type="text" name="T3" size="20"></p>
  <p><input type="text" name="T4" size="20"></p>
  <p><input type="text" name="T5" size="20"></p>
  <p><input type="button" value="Rechnen" name="B1" onClick="rechne()"></p>
</form>
</body>
</html>



Gruß

geschrieben von okley am 15.10.2005 - 00:15
ich persönlich bevorzuge das in kombination mit einer for-schlaufe

geschrieben von René am 15.10.2005 - 09:56
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
function calc()
{
	var felder = document.forms['myForm'].inputArray;
	var ergebnis = 0;

	for (var i = 0; i < felder.length; i++)
		ergebnis += (felder[i].value != '') ? Number(felder[i].value) : 0;

	document.forms['myForm'].result.value = ergebnis;
}

geschrieben von markus69 am 17.10.2005 - 05:02
cool. danke euch allen für eure inputs!


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.