Hallo NItram,
Das rockt!
Leider bin ich noch nicht fut genug, um den Code ganz nachzuvollziehen. Werde mich deshalb erst einmal damit beschäftigen.
Würde es mir erleichtern, wenn du mir den Code etwas erklärst, wenn es nichts ausmacht.
Ja, ich bin diesbezüglich in letzter Zeit etwas faul. Also hole ich es jetzt mal nach:
Die Funkktion telex() wird nicht onload der Seite aufgerufen, sondern jeweils in einem Script-Block nach dem jeweiligen Ticker-Element. (Das ist bei vorliegender Codierung auf P-Elemente mit dem Klassennamen "telex" eschränkt.) Das hat den Vorteil, dass bei längeren Seiten und langsamer Übertragungsrate der Text nicht zuerst sichtbar wird, während der rest der Seite noch lädt und dann erst verschwindet um dann wieder hervorzutickern.
> > function telex () {
> > var myPs = document.getElementsByTagName('P');
> > if(myPs[myPs.length-1].className == 'telex') {
> > var myTelex = myPs[myPs.length-1];
// hier nur wird das jeweils letzte P-Element der Klasse
// "telex" während des Ladevorgangs der Seite angesprochen.
> > myTelex.copy = myTelex.innerHTML;
// Der Text (innerHTML), der innerhalb des P-Elements steht
// (es darf sich dabei wirklich nur um einen reinen String
// handeln) wird in eine neu geschaffene Eigenschaft des
// P-Elements kopiert, der ich den Namen "copy" gebe.
> > myTelex.innerHTML = '';
// Der in "copy" gespeicherte String kann nun aus dem Element
// selbst herausgelöscht werden, er ist ja in "copy" gemerkt.
// Das jeweilige P-Element bekommt nun eine Methode verpasst,
// mit der es seinen jeweiligen Text auch wieder Buchstabe
// für Buchstabe in sein innerHTML zurücküberführen kann:
> > myTelex.typer = function () {
> > with(myTelex)
// myTelex ist eine Referenz auf den Eigentümer der
// Methode selbst, also das jeweils letzte P-Element
// während des Ladevorgangs.
> > if(copy) {
// falls sich noch ein String in der jeweiligen
// Eigenschaft "copy" des P-Elements befindet
> > innerHTML += copy.slice(0, 1);
// wird daraus das erste Zeichen herausgeschnitten
// (das kann auch ein Leerzeichen sein) und an das
// innerHTML des jeweiligen P-Elements angehängt.
// Am Anfang besteht dieses ja aus einer leeren
// Zeichenkette, da das ursprüngliche innerHTML
// gelöscht wurde.
> > copy = copy.slice(1, copy.length);
// Das jeweils erste Zeichen wird aus "copy" gelöscht.
// Dadurch wird das nächste Zeichen zum neuen ersten.
> > } else // wenn kein Zeichen in copy mehr vorhanden ist
> > window.clearInterval(typing);
// sollte das Intervall beendet werden,
// sonst wird unnötig Rechnerleistung blockiert.
> > }
// bis hier wurde die Methode nur definiert
> > myTelex.typing = window.setInterval(myTelex.typer, 40);
// hier wird sie mit einem Intervall von 40 Millisekunden
// immer wieder aufgerufen. Über die Referenz in der
// Eigenschaft "typing" des jeweiligen P-Elements stoppt
// das Intervall, wenn die Kopie komplett entleert und
// die jeweilige Zeichenkette an den Ursprungsort
// zurückgeschrieben ist.
> > }
> > }
</script>
Gruß Gernot
super me