Hallo,
ich stehe gerade ziemlich auf dem Schlauch. So ganz durchschaue ich das Konstrukt this.* immer noch nicht.
Mein Problem: Zwei verschiedene Infoticker (sliding div), die in unterschiedliche Richtungen "scrollen", sollen auf einer Seite eingebaut werden. (Ob das eine gute Idee ist, sei mal dahingestellt.) Dazu habe ich ein Script für einen browser-übergreifenden Ticker von Wolfgang Schwarz benutzt, die Funktionen dupliziert und Eigenschaften umbenannt. Allerdings behindern sich die verschiedenen Instanzen offensichtlich gegenseitig. Kommentiert man alle Anweisungen des einen Tickers aus, funktioniert der jeweils andere ohne Probleme. Beide gleichzeitig gehen nicht. Die Bewegung des divs wird teilweise an merkwürdigen, nicht nachzuvollziehenden Stellen abgebrochen.
Deshalb suche ich nach einer Möglichkeit, wenigstens bei einem der beiden Infoticker alle über this.* definierten Eigenschaften zu ersetzen. Geht das überhaupt? Und wenn ja, wie? Könnt Ihr mir helfen?
Gruß und danke,
Sabine
...
userAgent = navigator.userAgent.toLowerCase();
n4 = document.layers;
ie = (document.all && userAgent.indexOf("mac")<0);
w3c = document.documentElement;
dhtml = ((n4 || ie || w3c) && userAgent.indexOf("aol")<0);
function Ticker(name, parentId, id, hoehe){
this.name = name;
this.hoehe = hoehe;
this.el_r = n4? document.layers[parentId] : ie? document.all[id] : document.getElementById(id);
this.el = n4? document.layers[parentId].document.layers[id] : ie? document.all[id] : document.getElementById(id);
this.css_r = n4? this.el_r : this.el_r.style;
this.css = n4? this.el : this.el.style;
this.inhaltHoehe = n4? this.el.document.height : this.el.offsetHeight;
this.inhaltY = 106;
this.speed = 1;
this.hoch = TickerHoch;
this.stop = TickerStop;
}
function TickerHoch() {
this.stop();
this.timer = setTimeout(this.name+".hoch()", 25);
if (this.inhaltY>-this.inhaltHoehe)
{
if (this.inhaltY==15)
{
this.stop();
this.timer = setTimeout(this.name+".hoch()", 3000)
}
n4? this.css.visibility = "show" : this.css.visibility = "visible";
n4? this.css_r.visibility = "show" : this.css_r.visibility = "visible";
this.inhaltY -= this.speed;
this.css.top = this.inhaltY;
}
else
{
n4? this.css.visibility = "hide" : this.css.visibility = "hidden";
n4? this.css_r.visibility = "hide" : this.css_r.visibility = "hidden";
this.inhaltY = this.hoehe;
this.stop();
init();
}
}
function TickerStop() {
if (this.timer) clearTimeout(this.timer);
}
z_ticker=-1;
function init(){
if (!dhtml) return;
if (z_ticker<<?php echo $new_count-1 ?>) { z_ticker++; }
else { z_ticker=0 }
einTicker = new Ticker("einTicker", "tickerDiv"+z_ticker, "tickerText"+z_ticker, 106);
einTicker.hoch();
}