Michael Schröpl: Verbesserung und Frage zu einem Script

Beitrag lesen

Hi Johannes,

Indem Du ... aber eine komplexere Datenstruktur aufbaust, welche
nicht simpel auf Zeichen basiert.
wie meinst du das mit den Datenstruckturen? Kannst du mir nen Beispiel
geben, wie ich das machen kann???

Gedankenskizze:

Ersetze Deinen langen String durch eine Liste von Elementen.
(ein Array mit zwei Strings pro Komponente würde reichen, oder auch
zwei Arrays of String, falls das in JavaScript einfacher zu addres-
sieren ist)
1. Jedes Element enthält einen String (den darstellbaren Inhalt).
2. Jedes Element kann zusätzlich einen weiteren String enthalten
   (den Link-URL).
3. concat(alle Elemente) mit passend einsortierten Links entspricht
   Deinem bisherigen String.

Durch die Position Deiner Links hast Du die "Sollbruchstellen" Deines
langen Strings, kannst also zwingend die Elemente herleiten und lücken-
los aufsteigend durchnumerieren.

Nun fütterst Du Deinen im aktuellen Tickerdurchgang darzustellenden
String, d. h. wir machen einen Deiner Schleifendurchgänge.
Dazu hängst Du nun nicht einfach nur ein Zeichen an irgendwas hinten
dran, sondern Du mußt darüber Buch führen, wieviele Elemente bereits
vollständig sichtbar sind - denn das jeweils letzte sichtbare Element
mußt Du anders behandeln als alle vorherigen.

Bei jeder Ausgabe in den Ticker kannst Du alle bereits vollständig
sichtbaren Elemente plus die sie ggf. umgebenden Links in einem Rutsch
ausgeben - Du kannst diesen Teil-Skript inklusive der Links also
bereits in fertiger Form in einer Variablen halten, an diesem Teil
ändert sich bis zum Ende eines Ticker-Durchlaufs nichts mehr.

Hinter diesen String mußt Du dann das ausgeben, was vom nächsten
Element sichtbar sein soll, und zwar ggf. eingebettet in dessen (!)
Link. Dieses Stück Ticker-Inhalt ist nicht wiederverwendbar, weil Du
beim nächsten Durchgang nichts hinten dran hängen darfst, sondern
etwas mitten drin einfügen müßtest - da ist es einfacher, wenn Du das
letzte Stückchen jedesmal neu berechnest und mit seinem Link umhüllst:

var aktuelles_element = '<a href="' + link[position] + '">
                          + geklippter_text
                          + '</a>';

Dies natürlich nur, falls dieses Element tatsächlich einen Link hat

  • bedenke, daß die Zwischenräume zwischen Deinen Links eben genau
    Elemente ohne Link sein müssen.
    (Weil Du auf diese Weise Links und Zwischenräume systematisch behan-
    delst, hast Du volle Freiheit über den Aufbau Deines Tickers, d. h.
    insbesondere kann auch in den Zwischenräumen beliebiger Text stehen.)

Sobald dieses Stückchen vollständig sichtbar ist, kannst Du es in
seiner endgültigen Form an den bereits vorhandenen String mit allen
vorherigen vollständigen Elementen anhängen - nun ist das nächste
Element dran, im selben Modus stückchenweise sichtbar zu werden ...

Viele Spaß beim Programmieren
      Michael