Nicolas Ley: JavaScript Bug????

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>

  1. 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.

    --
    <img src="http://www.dmp-web.de/comunicout/neubauten.gif" border="0" alt="">
  2. 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

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. 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

    --
    Good results come from experience; and experience comes from bad results.
  4. 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.