JavaScript Bug????
Nicolas Ley
- javascript
0 Z.N.S.0 Cheatah0 Gunnar Bittersmann0 Struppi
Hallo zusammen, hier ein kleines Script, das bei mir zu einem fehlerhaften Ergebnis führt! Es vergleicht den Wert von des ersten Feldes mit dem Wert des zweiten Feldes. Vergleicht man nun eine einstellige Ziffer mit einer zweistelligen, so ist das Ergebnis fehlerhaft: 8 >= 10 -> true; 10 >= 11 false;
Hat einer ne Idee woran das liegt?
Hier nun das einfache Script:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
function chkFormular()
{
alert("blah");
alert(document.blah.start.value);
alert(document.blah.ende.value);
alert(document.blah.start.value >= document.blah.ende.value);
return false;
}
//-->
</script>
</head>
<body>
Test:
<form action="select.htm" name="blah" onSubmit="return chkFormular()">
<select name="start" size="1">
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
</select>
<select name="ende" size="1">
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
</select>
<input type="submit" value=" Absenden ">
</form>
</body>
</html>
abend,
auch wenn das in javascript nicht so richtig den anschein hat,
aber auch hier gilt: integer != string !!!
1. ist der inhalt deines values der selectbox ein string
2. fehlt bei deinem größer-als-vergleich ein parseInt()
um den string in einen integer-wert zu casten.
dann funzt es...
mfg
(tanz das)
Z.N.S.
Hi,
Hallo zusammen, hier ein kleines Script, das bei mir zu einem fehlerhaften Ergebnis führt!
falsch.
Es vergleicht den Wert von des ersten Feldes mit dem Wert des zweiten Feldes.
Richtig.
Vergleicht man nun eine einstellige Ziffer mit einer zweistelligen,
Falsch. Erstens meinst Du Zahlen, zweitens sind da keine.
so ist das Ergebnis fehlerhaft:
Falsch.
8 >= 10 -> true;
Richtig. "8" kommt in der ASCII-Tabelle schließlich deutlich nach "1".
10 >= 11 false;
Ebenfalls richtig. "1" ist identisch mit "1", "0" kommt vor "1".
Hat einer ne Idee woran das liegt?
Sicher. Du versuchst Zahlen zu erkennen, wo nur Strings sind. Desweiteren siehe Archiv.
Cheatah
8 >= 10 -> true; 10 >= 11 false;
Hat einer ne Idee woran das liegt?
blah.start und blah.ende sind Textfelder; also werden deren Inhalte nicht numerisch, sondern alphanumerisch verglichen, und da kommt 1... vor 8...
Gunnar
Hallo zusammen, hier ein kleines Script, das bei mir zu einem fehlerhaften Ergebnis führt! Es vergleicht den Wert von des ersten Feldes mit dem Wert des zweiten Feldes. Vergleicht man nun eine einstellige Ziffer mit einer zweistelligen, so ist das Ergebnis fehlerhaft: 8 >= 10 -> true; 10 >= 11 false;
Hat einer ne Idee woran das liegt?
Hier nun das einfache Script:
2 Dinge.
1. ist es falsch wie du an die Werte der select Feldern kommen willst http://selfhtml.teamone.de/javascript/objekte/options.htm
2. Kannst du dir das gnaze noch einfacher machen:
function chkFormular(form)
{
und hier kannst du dann mit form.feldName auf die Felder zugreifen.
Wenn du hier noch:
<form action="select.htm" name="blah" onSubmit="return chkFormular(this)">
machst.
Struppi.