|
FAQ de.comp.lang.javascript |
|
|||||||||||
Bitte verwenden Sie als Einstiegsadresse in diese FAQ die
Homepage der Newsgroup de.comp.lang.javascript.
Der Aufenthaltsort dieser Seiten hier kann sich ohne Vorwarnung ändern.
Ist "100" kleiner als "30"?
Wer Zahlenwerte miteinander vergleichen will, die er aus Formulareingaben
gewonnen hat, wundert sich mitunter darüber, dass bspw. "100" kleiner
"30" ist.
Beispiel:
var wert1 = document.forms['foo'].elements['eingabe1'].value,
wert2 = document.forms['foo'].elements['eingabe2'].value;
if (wert1 < wert2) {
alert(wert1 + ' ist kleiner als ' + wert2 + '.');
}
else if (wert2 < wert1) {
alert(wert2 + ' ist kleiner als ' + wert1 + '.');
}
else {
alert('Beide Werte sind gleich.');
}
Ausprobieren:
Der Grund hierfür ist, dass die value-Eigenschaft eines Input-Elements vom Typ string ist und Vergleichsperatoren wie "<" und ">" Strings lexikalisch vergleichen. Bei einem solchen Vergleich ist aber ein String, der mit "1" beginnt, vor einem String, der mit "3" beginnt, einzuordnen.
Abhilfe
Für einen numerischen Vergleich benötigen wir Operanden vom Typ number,
wir müssen daher unsere Formulareingaben in diesen Typ umwandeln. Dies kann
explizit geschehen, indem wir bspw. den Number()-Konstruktor verwenden. Einfacher
ist jedoch das Bilden einer Differenz. Der zugehörige Operator "-"
betrachtet seine Operanden immer als Number und liefert ein Ergebnis gleichen
Typs (bzw. NaN, falls sich seine Operanden nicht als Zahlenwerte interpretieren
lassen, was wir in diesem einfachen Beispiel aber außer acht lassen).
Die so gebildete Differenz vergleichen wir dann mit 0.
Beispiel:
var wert1 = document.forms['foo'].elements['eingabe1'].value,
wert2 = document.forms['foo'].elements['eingabe2'].value;
if (wert1 - wert2 < 0) {
alert(wert1 + ' ist kleiner als ' + wert2 + '.');
}
else if (wert2 - wert1 < 0) {
alert(wert2 + ' ist kleiner als ' + wert1 + '.');
}
else {
alert('Beide Werte sind gleich.');
}
Ausprobieren:
Diese Seite ist Teil der de.comp.lang.javascript FAQ. Die Einstiegsadresse lautet http://www.dcljs.de/.
Dieser Text wurde erstellt von Dietmar H. G. Meier (©).
© S. Mintert, Ch. Kühnel
______ letzte Änderung: 31.10.2004 ______