Addition mit JS
Paul
- javascript
Hi,
ich will eine einfache Addition mit Javascript machen. Mit: "Ergebnis = Zahl1 + Zahl2" funktioniert es nicht, aber wenn ich statt "+" "-" einsetzte geht alles einwandfrei. Eine Möglichkeit wäre noch Zahl1 - (-Zahl2), aber ich frage mich trotzdem, ob es nicht anders geht.
Hallo Paul,
"funzt nich" ist keine wirklich produktive Fehleranzeige. Ich kann mir nur vorstellen, dass Du ein Problem mit der Variablen-Deklaration hast, und 2 Strings statt Zahlen "addierst" wozu man den +Operator auch noch gebrauchen kann aber den -Operator nicht. Also poste mal Bitte eine konkrete Fehlerbeschreibung oder deinen Code.
Bye Ed X
<html>
<head>
<script language="JavaScript">
function x(Zahl1, Zahl2)
{
Ergebnis = Zahl1 + Zahl2;
alert("Das Ergebnis ist " + Ergebnis)
}
</script>
</head>
<body>
<form name="Formular"><br>
<input type="text" name="Zahl1" size=15 maxlength=3></input>
<input type="text" name="Zahl2" size=15 maxlength=3></input>
<input type="button" value="Klick" onClick="x(document.Formular.Zahl1.value,Zahl2.value)"></input>
</form>
</body>
</html>
Wenn ich oben Zahl1 - Zahl2 eingebe ist alles in Ordnung, aber so schreibt er einfach beide Zahlen hintereinander.
Hallo Paul,
Sag ich doch, die Dinger werden als String interpretiert.
Abhilfe unter:
http://www.teamone.de/selfhtml/tecm.htm#a4
<html>
<head>
<script language="JavaScript">
function x(Zahl1, Zahl2)
{
Ergebnis = parseInt(Zahl1) + parseInt(Zahl2);
alert("Das Ergebnis ist " + Ergebnis)
}
</script>
</head>
<body>
<form name="Formular"><br>
<input type="text" name="Zahl1" size=15 maxlength=3></input>
<input type="text" name="Zahl2" size=15 maxlength=3></input>
<input type="button" value="Klick" onClick="x(document.Formular.Zahl1.value,Zahl2.value)"></input>
</form>
</body>
</html>
sollte jetzt fuznen. Ersetze einfach die Zeile. Vielleich solltest Du noch was gegen Eingabefehler(Buchstaben oder Kommas) machen.
Bye Ed X
mist, war wieder ein anderer schneller ;-)))
Ergebnis = parseInt(Zahl1) + parseInt(Zahl2);
diese funktion wandelt strings in integers um...
url dazu: http://www.teamone.de/selfhtml/tecm.htm#a4
Marc
Hallo,
ich will eine einfache Addition mit Javascript machen. Mit: "Ergebnis = Zahl1 + Zahl2" funktioniert es nicht, aber wenn ich statt "+" "-" einsetzte geht alles einwandfrei. Eine Möglichkeit wäre noch Zahl1 - (-Zahl2), aber ich frage mich trotzdem, ob es nicht anders geht.
Du mußt Dir erst einmal darüber klar werden, was eine Variable in JavaScript bedeutet.
Variablen sind hier typenlos bzw. sie nehmen den Typ des in ihr gespeicherten Wertes an.
Somit wird ein
var x = 0 zu einer Variablen mit dem Inhaltstyp Zahl und dem Wert 0
und ein
var y = "0" eine Variable mit dem Inhaltstyp String und dem Wert "0"
und ein
var z = y + x ist ... ?
Es gibt eine Typenkonvertierungsregel. Die solltest Du Dir zu Gemüte ziehen.
Es gibt Konvertierungsfunktionen (nicht ganz) wie parseInt(...).
Eine 1 + "10" wird somit zu einer Zahl mit dem Wert 11.
Eine "1" + 10 wird zu einem String mit dem Wert "110";
Somit ist also ein
(1 * zahl1 ) + zahl2
eine Zahl, ergo Deine Lösung!
denk mal drüber nach
with best regards
stw
Hi!
Du mußt Dir erst einmal darüber klar werden, was eine Variable in JavaScript bedeutet.
Variablen sind hier typenlos bzw. sie nehmen den Typ des in ihr gespeicherten Wertes an.
Variablen sind eben *nicht* typenlos! Sie nehmen nur dummerweise abhaengig vom zugewiesenen Wert immermal einen anderen Typ an. Naja, das hast Du wohl gemeint. Ausserdem wird abhaengig vom Kontext ab und zu mal eine Typumwandlung durchgefuehrt, so wie gleich nachfolgend gezeigt, diese wird dann aber nicht in der Variable gespeichert.
Es gibt eine Typenkonvertierungsregel. Die solltest Du Dir zu Gemüte ziehen.
Es gibt Konvertierungsfunktionen (nicht ganz) wie parseInt(...).
Eine 1 + "10" wird somit zu einer Zahl mit dem Wert 11.
Eine "1" + 10 wird zu einem String mit dem Wert "110";
Beim ersten kommt auch "110" raus. Ich kenne zwar keine feste Konvertierungsregel, aber man kann sich merken, dass immer der Weg des geringsten Widerstands gegangen wird. Und der geringste Widerstand fuehrt immer zum String (dr laesst sich aus allen Datentypen erzeugen, im Gegensatz zu einer Zahl). Wird also eine Number und ein String addiert, egal in welcher Reihenfolge, wird die Zahl in einen String umgewandelt und dann eine Stringaddition durchgefuehrt. Anders ist es bei der Subtraktion. Eine Stringsubtraktion gibt es nicht, deshalb wird dann versucht, alle Beteiligten in eine Zahl umzuwandeln. Aehnlich ist es bei der Multiplikation.
Somit ist also ein
(1 * zahl1 ) + zahl2
eine Zahl, ergo Deine Lösung!
Ja, intern wird aber auch einfach ein parseInt() durchgefuehrt.
So long
Hallo So long,
Eigentlich hast Du recht und mir treibst die Schamesröte ins Gesicht <G>.
Coercion
The JScript interpreter can only evaluate expressions in which the data types of the operands are the same. Without coercion, an expression that attempts to perform an operation on two different data types (a number and a string for example) would produce an erroneous result. But that is not the case with JScript.
JScript is a loosely-typed language. This means its variables have no predetermined type (as opposed to strongly typed languages like C++). Instead, JScript variables have a type that corresponds to the type of value they contain. A benefit of this behavior is that it provides you with the flexibility to treat a value as if it were of another type.
In JScript, you can perform operations on values of differing types without fear that the JScript interpreter will raise an exception. Instead, the JScript interpreter automatically changes (coerces) one of the data types to that of the other, then performs the operation. For example:
Operation Result
Add a number and a string The number is coerced into a string.
Add a boolean and a string The boolean is coerced into a string.
Add a number and a boolean The boolean is coerced into a number.
Consider the following example.
var x = 2000; // A number.
var y = "Hello"; // A string.
x = x + y; // the number is coerced into a string.
document.write(x); // Outputs 2000Hello.
To explicitly convert a string to an integer, use the parseInt Method. To explicitly convert a string to a number, use the parseFloat Method. Notice that strings are automatically converted to equivalent numbers for comparison purposes, but are left as strings for addition (concatonation).
<
Jaja, JScript, shon klar...
cu
stw