Homepapa-Logo

CSS Anwendung

Ergänzung

Wie wir eine eindeutige Id aufbauen

          var zaehler = new Array() ;
          zaehler[1] = 0 ;
...
          diese_id = "" ;                               // (1)
          for(di=1 ; di<9 ; di++) {                     // (2)
            if(di > diesestufe) zaehler[di] = 0 ;       // (3)
            else {                                      // (4)
              if(di == diesestufe) zaehler[di]++ ;      // (5)
              diese_id += zaehler[di] + "." ;           // (6)
            }
          }

Der kurze Abschnitt in unserem Skript umfasst lediglich 6 Zeilen, aber sie bedürfen eines Kommentars. Das Schwierige an ihnen ist übrigens nicht einmal die JavaScript-Syntax, sondern die Überlegungen, die hinter diesen paar Zeilen stehen. Genau deshalb sollten solche Abschnitte auch kommentiert werden, denn nachträglich aus dem Code herauszufinden, was da gemacht wird und weshalb - das ist schon sehr schwer.

Nun denn. Um aussagekräftige Ids zu konstruieren, die z.B. 3.1.2. lauten könnten, brauchen wir für jede Stufe einen eigenen Zähler. Unser Beispiel zeigt die Id für einen Eintrag der dritten Stufe. Wir gehen eigenmächtig davon aus, dass es maximal 9 Stufen gibt - wahrscheinlich liegen wir damit ohnehin viel zu hoch.

Wenn wir vom Beispiel 3.1.2. ausgehen, können wir uns ja mal überlegen, wie denn die Id für den nächsten Eintrag aussehen müsste.

der neue Eintrag hat die Stufe dann lautet die Id gezählt wurde hier
14. 3.1.2.
23.2. 3.1.2.
33.1.3. 3.1.2.
43.1.2.1.3.1.2. 

Daraus können wir mit ein wenig Überlegen drei Regeln ableiten:

  1. Der Zähler der eigenen Stufe wird jeweils um eins erhöht.
  2. Die Zähler aller Stufen, die unter der eigenen Stufe liegen, bleiben unverändert.
  3. Die Zähler aller Stufen, die über der eigenen Stufe liegen, werden bei der Bildung der Id nicht verwendet.

Damit haben wir den nötigen Hintergrund, um die Zeilen unseres JavaScript zu verstehen:

  1.           diese_id = "" ;                               // (1)
    Wir werden die Id bilden, indem wir in der Variablen diese_id Schritt für Schritt die einzelnen Zähler aneinander reihen. Zunächst ist die Variable nun mal leer.
  2.           for(di=1 ; di<9 ; di++) {                     // (2)
    Nun gehen wir alle 9 Zähler der Reihe nach durch. Die Stufe, die wir jeweils bearbeiten, wird von der Variablen di repräsentiert. Sie ist zunächst mal 1 und so lange sie kleiner als 9 ist, werden die nachfolgenden Anweisungen alle ausgeführt und di anschliessend um eins erhöht.
  3.             if(di > diesestufe) zaehler[di] = 0 ;       // (3)
    Irgendwann geraten wir dann über unsere aktuelle Stufe hinaus. Gemäss Überlegung 3 brauchen wir die Zähler dieser hohen Stufen für unsere Id nicht. Aber wir setzen sie vorsorglich auf 0.
    Der allererste Eintrag wird die Stufe 1 haben und also die Variable zaehler[1] um eins erhöhen wollen. Damit das überhaupt geht, haben wir im Vorspann diese Variable schon mal mit 0 belegt.
  4.             else {                                      // (4)
    Bleiben noch diejenigen Stufen anzusehen, die für die Bildung der Id wichtig sind.
  5.               if(di == diesestufe) zaehler[di]++ ;      // (5)
    Wie in der ersten Regel erwähnt, wird der Zähler der eigenen Stufe um eins erhöht.
  6.               diese_id += zaehler[di] + "." ;           // (6)
    Der aktuelle Zähler wird nun zusammen mit einem Punkt an die Id angehängt. Das passiert für alle Zähler auf tieferen Stufen. Es gilt auch für den Zähler der aktuellen Stufe, der soeben (in Zeile 5) erhöht wurde, und es wird für die Zähler der nachfolgenden, höheren Stufen, nicht mehr gelten.

Damit ist die Konstruktion der Id wohl erschöpfend kommentiert. Du kannst dieses Fenster wieder schliessen.