Jens: substrings und eval, wo liegt der Fehler?

<html><head><title>Test</title>

<script language="JavaScript">

function check()
/*

Frage gleich als HTML-Code damit‚s leichter fällt:

es soll folgendes erreicht werden:
das Datum soll auf seine Bestandteile extrahiert werden, also
ein 01, dann ein Punkt, dann der Monat, wieder ein Punkt sowie
das Jahr mit 4 Stellen.
Aber irgendwie funktionieren die Substrings nicht richtig, gibt es
einen Trick????

*/
{
value_Datum="document.LIEF.DAT_1.value";

alert ("value_Datum ist:"+value_Datum);
alert ("eval value_Datum ist:" +eval(value_Datum));
alert ("eval 0,10  ist richtig: " + eval(value_Datum+'.substring(0,10)') );
alert ("eval 2,1  muesste ein Punkt sein: " + eval(value_Datum+'.substring(2,1)') );
alert ("eval 5,1  sollte auch ein Punkt sein: " + eval(value_Datum+'.substring(5,1)') );
alert ("eval 0,2 funktioniert (Tag) : " + eval(value_Datum+'.substring(0,2)') );
alert ("eval 3,2 (Monat) funktioniert nicht, warum? : " + eval(value_Datum+'.substring(3,2)') );
alert ("eval 6,4 (Jahr) funktioniert auch nicht: " + eval(value_Datum+'.substring(6,4)') );
}

</script>
</head><body>
<form action="http://www.irgendwo.de" name="LIEF" onSubmit="return check();">
<input type="Text" name="DAT_1" value="01.01.2001" size="10" maxlength="10"><br>
<input type="submit" name="Absenden">
</form>
</body></html>

  1. Hi
    Du hast nur einen kleinen Fehler in deinen substrings. Denn: Die Zweite Zahl in substring gibt nicht etwa die Anzahl der zu extrahierenden Zeichen an, sondern die Position des ersten nicht! mehr zu extrahierenden Zeichens.
    So klappt also alles:

    ...
    alert ("value_Datum ist:"+value_Datum);
    alert ("eval value_Datum ist:" +eval(value_Datum));
    alert ("eval 0,10  ist richtig: " + eval(value_Datum+'.substring(0,10)') );
    alert ("eval 2,3  ist jetzt ein Punkt: " + eval(value_Datum+'.substring(2,3)') );
    alert ("eval 5,6  ist auch ein Punkt: " + eval(value_Datum+'.substring(5,6)') );
    alert ("eval 0,2 funktioniert (Tag) : " + eval(value_Datum+'.substring(0,2)') );
    alert ("eval 3,5 (Monat) funktioniert auch: " + eval(value_Datum+'.substring(3,5)') );
    alert ("eval 6,11 (Jahr) funktioniert auch : " + eval(value_Datum+'.substring(6,11)') );
    ...
    Tschau Holger

    1. Typisch, die kleinen Dinge im Leben, danke!
      Jens

      Hi
      Du hast nur einen kleinen Fehler in deinen substrings. Denn: Die Zweite Zahl in substring gibt nicht etwa die Anzahl der zu extrahierenden Zeichen an, sondern die Position des ersten nicht! mehr zu extrahierenden Zeichens.
      So klappt also alles:

      ...
      alert ("value_Datum ist:"+value_Datum);
      alert ("eval value_Datum ist:" +eval(value_Datum));
      alert ("eval 0,10  ist richtig: " + eval(value_Datum+'.substring(0,10)') );
      alert ("eval 2,3  ist jetzt ein Punkt: " + eval(value_Datum+'.substring(2,3)') );
      alert ("eval 5,6  ist auch ein Punkt: " + eval(value_Datum+'.substring(5,6)') );
      alert ("eval 0,2 funktioniert (Tag) : " + eval(value_Datum+'.substring(0,2)') );
      alert ("eval 3,5 (Monat) funktioniert auch: " + eval(value_Datum+'.substring(3,5)') );
      alert ("eval 6,11 (Jahr) funktioniert auch : " + eval(value_Datum+'.substring(6,11)') );
      ...
      Tschau Holger