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 |
|---|---|---|
| 1 | 4. | 3.1.2. |
| 2 | 3.2. | 3.1.2. |
| 3 | 3.1.3. | 3.1.2. |
| 4 | 3.1.2.1. | 3.1.2. |
Daraus können wir mit ein wenig Überlegen drei Regeln ableiten:
Damit haben wir den nötigen Hintergrund, um die Zeilen unseres JavaScript zu verstehen:
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. 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.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.
zaehler[1] um eins erhöhen wollen.
Damit das überhaupt geht, haben wir im Vorspann diese Variable schon mal mit 0 belegt. else { // (4)
Bleiben noch diejenigen Stufen anzusehen, die für die Bildung der Id wichtig sind.if(di == diesestufe) zaehler[di]++ ; // (5)Wie in der ersten Regel erwähnt, wird der Zähler der eigenen Stufe um eins erhöht.
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.