Hauptmenü

Untermenü

OOP/DOM-Scripting JavaScript - Praxistutorial 4 - Die weiteren Schritte

1. Die Abschnitte

2. Die Sache mit Parameter

Nun wollen wir uns Stück für Stück durch die Navigation klicken und dabei eigentlich immer dasselbe machen. Link mit Event-Listener belegen, Inhalt einfügen, Event-Listener entfernen und zum nächsten Link hüpfen. Dafür benötigen wir ein Array, in dem wir die entsprechenden Elemente ablegen. Das erklärt auch den Wert 0 im vorherigen Abschnitt, denn dabei geht es um den ersten Link.

3. Wir haben doch schon die Elemente

..., werden jetzt einige von euch denken. Ja, die existieren, aber nicht als Array! Die Feinheiten dazu findet ihr hier und Punkt 3. Jetzt könnte man auf die Idee kommen, das im Literal abzubilden. Und zwar so.


order : new Array (this.headlinethis.text, ...),

Denkste!

Das funktioniert nicht. Denn this verweist mal wieder auf was? Genau, auf das gottverdammte window-Objekt. Wenn ich den Kerl erwische, der dafür verantwortlich ist! Also bauen wir der Einfachheit halber das Array in die Konstruktorfunktion Glorification ein.


function Glorification()
{ 
  var order  = new Array (data.headlinedata.text, ...);
  ...
}

Und wo wir schon dabei sind, ergänzen wir das um ein weiteres Array, das wir für die Texte benötigen. Was das soll, erzähle ich euch gleich.


var input = new Array ('headline''text', ...);

Ach ja, die Pünktchen in den beiden Arrays ergänzt ihr mal selber. Ein Tipp, es geht um die Elemente von headline bis zitat.

4. Die Methode moveForward

... zeige ich euch erst mal zur Gänze und werde sie dann erklären.


function moveForward(klick)
{
  order[klick].style.background '#fff'; 
  order[klick].style.color      '#000'; 
  order[(klick 1)].style.background '#dadada';         
  data.content.innerHTML += data.texte[input[klick]];
  that.addHandler (order[(klick 1)], 'click', function()
    {
      moveForward(klick 1);
      that.removeHandler (order[(klick 1)], 'click'arguments.callee);
    }
  );
}

Erläuterung

Die ersten drei Zeilen in der Methode sollten euch bekannt vorkommen. Denn hier machen wir nichts anderes als in startGlorification. Nur greifen wir diesmal auf die Element-Referenzen im Array order zu. Dadurch werden die aktiven Links optisch hervorgehoben und die inaktiven nicht.

Dann fügen wir mit data.content.innerHTML weiteren HTML-Code aus texte in das entsprechende <div>-Element mit der ID content ein. Der Rest ist auch nichts Neues, dem nächsten Element (order[(klick + 1)] wird der Event-Listener verpasst und über das that.removeHandler... beim erstem Klick wieder entfernt.

Der Clou bei der ganzen Sache ist der Parameter klick, der einfach raufgezählt wird. Und dank der beiden Arrays zur Steuerung funktioniert das auch wunderbar. Vorausgesetzt, ihr habt eine identische Reihenfolge.

Aber!

Die ganz Schlauen unter euch werden einwenden, dass das irgendwann mal tierisch knallen wird. Nämlich, wenn wir beim letzten Element (dem "Zitat" angekommen sind. Wohl wahr! Und darum werden wir das nun entsprechend abfangen.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt