Verbesserung und Frage zu einem Script
Johannes
- javascript
Hi, habe mich drangemacht einen Ticker in JS zu schreiben, die Ausgabe auf einem Layer soll HTML Code interpretieren, da ich aber immer das erste Zeichen hinten dran hänge werden Links auseinandergerissen, schauts euch mal an:
[code]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>Neues Dokument</title>
<script language="Javascript">
Headline = new Array();
Adresse = new Array();
Headline[1] = "Testlink 1";
Headline[2] = "Testlink 2";
Headline[3] = "Testlink 3";
Adresse[1] = "http://www.gamengine.tk";
Adresse[2] = "http://www.gamengine.tk";
Adresse[3] = "http://www.gamengine.tk";
var Trennzeichen = " +++ "
var msg ="<a href='" + Adresse[1] + "' onmouseover='window.clearTimeout(aktiv);' onMouseout='aktiv = window.setTimeout("ticker_move()",100);'>" + Headline[1] + "</a>" + Trennzeichen + "abcdefghijklmnopqrstuvwxyz" + Trennzeichen;
function ticker_move()
{
Testformular.tickertext.value = msg;
document.all["Ebene1"].innerHTML = msg;
msg = msg.substring(1,msg.length)+ msg.substring(0,1);
aktiv = window.setTimeout("ticker_move()",100);
}
</script>
<style media="screen" type="text/css"><!--
#Ebene1 { background-color: #85ff68; position: absolute; top: 190px; left: 67px; width: 447px; height: 32px; visibility: visible }
--></style>
</head>
<body onload="ticker_move();">
<form name="Testformular">
<input type="text" name="tickertext" size="24" onmouseover="window.clearTimeout(aktiv);" onMouseout="aktiv = window.setTimeout('ticker_move()',100);">
</form>
<div id="Ebene1"></div>
</body>
</html>
[code]
Wie schaffe ich es nun, das die Links immer richtig angezeigt werden.?
Mfg Johannes
Hi,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
[...]
<script language="Javascript">
ERROR: Required attribut TYPE missing.
Wie schaffe ich es nun, das die Links immer richtig angezeigt werden.?
Indem Du Deinem JavaScript beibringst, HTML zu erkennen, oder aber eine komplexere Datenstruktur aufbaust, welche nicht simpel auf Zeichen basiert.
Cheatah
Hi,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
[...]
<script language="Javascript">
ERROR: Required attribut TYPE missing.
Wie schaffe ich es nun, das die Links immer richtig angezeigt werden.?
Indem Du Deinem JavaScript beibringst, HTML zu erkennen, oder aber eine komplexere Datenstruktur aufbaust, welche nicht simpel auf Zeichen basiert.
Cheatah
Wie bitte soll ich ihn das denn beibringen? Ne Idee? bzw. wie meinst du das mit den Datenstruckturen? Kannst du mir nen Beispiel geben, wie ich das machen kann???
Mfg Johannes
Hi,
Wie bitte soll ich ihn das denn beibringen?
diese Möglichkeit ist eher theoretischer Natur. Ich würde mir selbst kaum zutrauen, das relativ allgemeingültig hinzubekommen (sofern ich nicht mindestens 'ne Woche ausschließlich damit verbringe).
bzw. wie meinst du das mit den Datenstruckturen?
Komplexe Objektstruktur, oder aber aus einer Menge voneinander abhängiger (z.B.) Arrays einzelne Elemente zu einem sinnvollen Ergebnis zusammenführen.
Kannst du mir nen Beispiel geben, wie ich das machen kann???
Nein. Ein Beispiel wäre quasi eine Lösung - und die wird sicher auch ein, zwei Tage kosten, die ich nicht zur Verfügung habe.
Cheatah
Nein. Ein Beispiel wäre quasi eine Lösung - und die wird sicher auch ein, zwei Tage kosten, die ich nicht zur Verfügung habe.
Cheatah
OK, danke trotzdem, ich dachte auch schon, dass ich da was mit XML machen könnte, aber das wird sicher auch schwierig......
Mfg Johannes
Hi,
OK, danke trotzdem, ich dachte auch schon, dass ich da was mit XML machen könnte, aber das wird sicher auch schwierig......
nun, da HTML auch "nur" ein XML ist - dazu noch ein sehr unsauberes - dürfte diese Variante nicht wesentlich leichter sein...
Cheatah
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
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