Zur Navigation

In JavaScript addieren statt zusammenfügen

1 Jörg Kruse

Vor diesem Problem stehen (standen) sicher die meisten irgendwann mal, deswegen führe ich es hier nochmal auf.

Mit folgendem Formular soll eine Addition durchgeführt werden:

<form><input type="text" size="3" name="a" id="a" /> + <input type="text" size="3" name="b" id="b" /> = <input type="text" size="3" name="c" id="c" /> <button type="button" onclick="add();">berechnen</button></form>

Die Funktion add() schaut in etwa so aus:

<script type="text/javascript">
function add()
{
  a = document.getElementById('a').value;
  b = document.getElementById('b').value;
  c = a + b;
  document.getElementById('c').value = c;
}
</script>

Wenn man dann 1 + 2 berechnen möchte, erhält man als ERgebnis nicht wie erwartet 3, sondern 12.

In JavaScript fungiert das + Zeichen entweder als Operator für die Addition von Zahlen oder zum Zusammenfügen von Strings. In dem oben aufgeführten Fall handelt es sich bei den aus den Input-Feldern extrahierten Variablen um Strings, deswegen werden a und b zusammengefügt und nicht addiert. Man muss also vor der Addition noch eine Typenumwandliung mit parseInt() vornehmen

<script type="text/javascript">
function add()
{
  a = parseInt(document.getElementById('a').value);
  b = parseInt(document.getElementById('b').value);
  c = a + b;
  document.getElementById('c').value = c;
}
</script>

17.05.2007 22:49

... 2 Jahre und 8 Monate später ...

2 Tim (Gast)

Ich habe geschrieben:
var Steuern = Steuern + 5;
var StartHaushalt = window.prompt("Start Haushalt","Geben sie eine Zahl N ein !")
var Haushalt1
und
var Haushalt1 = StartHaushalt + parseInt(Steuern);
document.Haushalt.INPUT.value = Haushalt1;
darauf hin erscheint in
<form name="Haushalt">
<input name="INPUT" disabled>
</form>
trotzdem nur die zusammensetzung, was habe ich falsch gemacht ???

tim

30.01.2010 18:26

3 Jörg Kruse

Das window.prompt gibt einen String zurück, so dass du dort eine Typenumwandlung benötigst; wenn du die Variable Steuern dagegen als Zahl 5 (ohne Anführungszeichen) definierst, benötigst du dort keine Typenumwandlung

var Steuern = 5;
var StartHaushalt = window.prompt("Start Haushalt","Geben sie eine Zahl N ein !")

var Haushalt1 = parseInt(StartHaushalt) + Steuern;
document.Haushalt.INPUT.value = Haushalt1;

30.01.2010 20:00

4 Rudy

Quick'n'dirty:

  var a='1'; var b='2';
  alert(a+b); //12 
  alert(a*1+b*1); //3

Wenn man multipliziert führt JS automatisch den Cast durch und behandelt den Wert als Zahl. Die Multiplikation mit 1 verändert den numerischen Wert ansonsten nicht, sofern es denn einer ist. Ist einer der Werte keine Zahl sondern z.B. ein String wie 'abc', ist das Ergebnis NaN. Wissenswert: null*1=0, ''*1=0.

alert(null*1); //0;
alert(''*1); //0;

09.02.2010 00:02 | geändert: 09.02.2010 00:07

... 1 Jahr und 10 Monate später ...

5 Horst (Gast)

das geht doch gar nicht so!

04.01.2012 16:11

... 1 Jahr und 1 Monat später ...

6 Dieter (Gast)

Das funktioniert nicht

18.02.2013 09:22

... 1 Jahr später ...

7 Bernhard (Gast)

Rudys Methode funktioniert wunderbar

10.03.2014 21:03

... 6 Monate später ...

8 Jojo (Gast)

<html>
	<head>
		<title> Test </title>
	<head>
<body>
	<h1> Einfaches addieren </h1>
	
		<script type="text/javascript">
			
			var zahl1 = prompt ("Geben sie die erste Zahl ein");
			var zahl2 = prompt ("Geben sie die zwite Zahl ein");
			
			var summe = (zahl1*1 + zahl2*1);
			
			window.document.write ("Das Ergebnis ist " + summe + "!");
		</script>
</body>
</html>
Das sollte so gehen!
Die Zahl die addiert werden soll vor dem "+" (addieren) rechnen mir 1 " * "(multiplizieren).
Bsp. 10*1 + 13*1 = 10 + 13 = 23


17.09.2014 10:42

... 5 Monate später ...

9 Egon Schmid (Gast)

Es geht statt

zahl1*1 + zahl2*1

auch so:

zahl1 - - zahl2

(wichtig ist das Leerzeichen zwischen den Minuszeichen!)

25.02.2015 20:14

... 2 Jahre und 5 Monate später ...

10 borstie0815 (Gast)

funkt. danke :)

27.07.2017 23:54