Alex: Was mache ich Falsch? Komisch!

Hallo, brauche eure Hilfe.
Ich generiere mit JS in einem Select-Tag die optionen, leider kommt es zu einem Fehler:

  
<script type="text/javascript">  
var jetzt = new Date();  
var jahr  = jetzt.getFullYear();  
for(var i=jahr; i < jahr+11; i++) {  
  var kurz = jahr.substr(2,4);  
  document.write('<option value="'+ kurz +'">'+ i +'</option>');  
}  
</script>  

Das Ziel ist, 10 Optionen zu generieren, vom Jahr 2008 bis 2018.
Dabei muss ich als Value, das Jahrkürzel benutzen, also bei 2008 die "08" usw.

Es kommt aber immer zu einem Fehler, warum?
jahr.substr is not a function
var kurz = jahr.substr(2,4);

  1. Hallo!

    jahr ist eine Zahl, kein String - damit fehlt ihr die Methode substr. Verwende lieber den Modulo:

      
    var kurz = jahr % 100;
    

    Damit kommst Du auf das gewünschte Ergebnis und brauchst keine Typenkonvertierung zu machen.

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. jahrist eine Zahl, kein String - damit fehlt ihr die Methode substr. Verwende lieber den Modulo:

      var kurz = jahr % 100;

      
      >   
      > Damit kommst Du auf das gewünschte Ergebnis und brauchst keine Typenkonvertierung zu machen.  
      
      Danke, aber ich bekomme trotzdem nur "8" als Value, ich will aber "08".
      
      1. hallo,

        var kurz = jahr % 100;

          
        
        > Danke, aber ich bekomme trotzdem nur "8" als Value, ich will aber "08".  
          
        dann müsstest du nachfragen jahr%100 derzeit kleiner 10 ist und gegebenenfalls eine null davorsetzen. zB. so.: ~~~javascript
          
        var kurz = ((kurz = jahr%100) < 10) ?"0"+kurz :kurz;  
        
        

        gruß,

        pD

      2. Danke, aber ich bekomme trotzdem nur "8" als Value, ich will aber "08".

        Eine Zahl wird zum String, indem mindestens ein Buchstabe angefügt wird:

        jahrx = jahr +'x';

        Wenn du sicher bist, dass es keine führenden Nullen gibt, kannst du jetzt einen Substring abgreifen:

        jj = jahrx.substr(2,2);

        Kalle

        1. Hi,

          Eine Zahl wird zum String, indem mindestens ein Buchstabe angefügt wird:

          ein (auch Zahlen-)Objekt wird zum String, indem dessen toString()-Methode aufgerufen wird. Andere Methodiken der Kategorie "Trick" existieren ebenfalls - und zwar ohne das Ergebnis inhaltlich zu verfälschen.

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
        2. [latex]Mae  govannen![/latex]

          Danke, aber ich bekomme trotzdem nur "8" als Value, ich will aber "08".

          Eine Zahl wird zum String, indem mindestens ein Buchstabe angefügt wird:

          jahrx = jahr +'x';

          Nö, auch mit '' geht es:

          a = 2008;  
          alert (typeof a);  
          a = 2008 + '';  
          alert (typeof a);
          

          Sinnvoll ist es trotzdem nicht, sondern man sollte es so machen, wie es vorgesehen ist ;)

          Cü,

          Kai

          --
          Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
          selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
          Mein Selfhtml-Kram
      3. Hi,

        Danke, aber ich bekomme trotzdem nur "8" als Value, ich will aber "08".

        Na dann fang bloss nicht an, selber mitzudenken, sondern warte einfach ab, bis dir die fertige Loesung auf dem Silbertablett serviert wird.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
  2. Das Ziel ist, 10 Optionen zu generieren, vom Jahr 2008 bis 2018.

    Wieviele Optionen sind das?

    var kurz = jahr.substr(2,4);

    Wenn das Jahr "2010" ist, was soll dann jahr.substr(2,4) sein?

    Kalle

  3. Hi Alex,

      
    
    > for(var i=jahr; i < jahr+11; i++) {  
    >   var kurz = jahr.substr(2,4);  
    >   document.write('<option value="'+ kurz +'">'+ i +'</option>');  
    > }  
    
    

    Moechtest Du nicht spaeter bei der Auswertung des Formulares wissen, welches Jahr ausgewaehlt wurde?

    Viele Gruesse,
    der Bademeister