[gelöst] Seltsames Verhalten der Zählvariable in einer Schleife

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [gelöst] Seltsames Verhalten der Zählvariable in einer Schleife

    Kann mir mal einer dieses merkwürdige Verhalten erklären? Also, ich habe eine Seite mit sechs Links. Die lese ich mit
    PHP-Code:
    var links document.getElementsByTagName('a'); 
    aus. Danach baue ich eine einfache Schleife mit
    PHP-Code:
    for (0links.lengthi++)
    {
      
    alert (i);

    Hier wird korrekt von 0 bis 5 ausgegeben. Setze ich aber nach der Schleife ein
    PHP-Code:
    for (0links.lengthi++)
    {
      ...
    }
    alert(i); 
    so bekomme ich eine 6 ausgegeben. Ich habe mit Absicht nicht mit einem var gearbeitet, da ich etwas testen möchte.

    Aber warum erhöht sich der eigentliche Wert um 1? i sollte doch am Ende den Wert 5 und nicht 6 haben.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

  • #2
    Hallo Peter,

    for (Schleifeninitialisierung; Schleifenbedingung; Schleifenfortschritt)

    die 5 erfüllt die Bedingung gerade noch, also geht's in den Schleifenkörper rein. An dessen Ende wird immer der Schleifenfortschritt ausgeführt (i = 6) und danach erst wieder die Schleifenbedingung getestet, die trifft für die 6 nicht mehr zu und damit ist die Schleife erst beendet (mit i = 6). Also alles logisch und keine Zauberei

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      So funktionieren For-Schleifen nun mal.

      for (<Initialisierung>, <Abbruchbedingung>, <Iterationsschritt>)

      Initialisierung findet vor dem ersten Durchlauf statt.
      Abbruchbedingung wird vor jedem Durchlauf geprüft.
      Iterationsschritt wird nach jedem Durchlauf angewandt.

      Dein letzter Durchlauf ist mit i = 5. Danach wird der Iterationsschritt angewandt. Nun ist i = 6. Jetzt wird die Abbruchbedingung geprüft und abgebrochen. i ist immer noch 6.

      Man könnte sich vielleicht fragen, warum i außerhalb der Schleife überhaupt existiert. Aber das ist eben eine Eigenschaft der Sprache.

      EDIT:
      Omg, wie ein altes Ehepaar.

      Kommentar


      • #4


        Ich werde langsam alt. Oder senil. Oder sollte nach 19 Uhr die Finger vom Rechner lassen!

        Danke
        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Zitat von onemorenerd Beitrag anzeigen
          Man könnte sich vielleicht fragen, warum i außerhalb der Schleife überhaupt existiert. Aber das ist eben eine Eigenschaft der Sprache.
          Warum sollte i denn nicht dort existieren? Das ist in JS immer noch klarer als in PHP, wo es noch weniger Variablenscopes gibt.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Zitat von Kropff Beitrag anzeigen
            Ich werde langsam alt. Oder senil.
            dem armen Peter einen Gehstock und einen Keks reich.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Zitat von AmicaNoctis Beitrag anzeigen
              dem armen Peter einen Gehstock und einen Keks reich.
              Gib mir lieber eine Kugel. Oder gleich den Fangschuss. Nach 8 Stunden Magento-Code bin ich immer völlig daneben.

              Peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Zitat von Kropff Beitrag anzeigen
                Gib mir lieber eine Kugel. Oder gleich den Fangschuss.
                Ich bin AKKIP (atheistische und dem konfuzianischen kategorischen Imperativ verpflichtete Pazifistin) und da ist mir das verboten.

                Zitat von Kropff Beitrag anzeigen
                Nach 8 Stunden Magento-Code bin ich immer völlig daneben.
                Mein Beileid, über Magento hört man nur Schlechtes.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Zitat von AmicaNoctis Beitrag anzeigen
                  Mein Beileid, über Magento hört man nur Schlechtes.
                  OffTopic:
                  Siehe dazu auch das hier.

                  Zitat von AmicaNoctis Beitrag anzeigen
                  Ich bin AKKIP (atheistische und dem konfuzianischen kategorischen Imperativ verpflichtete Pazifistin) und da ist mir das verboten.
                  OffTopic:
                  Huch, eine Warmduscherin

                  Peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    OffTopic:
                    Zitat von Kropff Beitrag anzeigen
                    Huch, eine Warmduscherin
                    Mach dich ruhig lustig... bis das Fliegende Spaghettimonster dich holen kommt...

                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      Zitat von AmicaNoctis Beitrag anzeigen
                      OffTopic:

                      Mach dich ruhig lustig... bis das Fliegende Spaghettimonster dich holen kommt...

                      OffTopic:
                      Und dann mit Wattebäuschchen wirft

                      Und jetzt ist gut. Wird langsam ziemlich OT. Sonst kommt der böse wahsaga.

                      Peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        Zitat von Kropff Beitrag anzeigen


                        Ich werde langsam alt. Oder senil.
                        Besser: Beides
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar

                        Lädt...
                        X