Tagchen !
- der Ablauf scheint mir etwas konfus zu sein:
- ebene()
x < zahl, ruft auf() auf- auf()
erhöht x
ruft MM_showHideLayers(""+wert+"",'','show') auf
setzt den timer für nix()
zurück zu 1.
je nach Laufzeitdauer von MM_showHideLayers(""+wert+"",'','show') wird jetzt entweder nach Ablauf der Dauer nix() gestartet _oder_ der Timer für nix() neu gesetzt
ja!
Entweder hab ich's schlecht erklärt, oder wir reden aneinander vorbei :)
Ich versuchs noch mal mit einem Beispiel (die Zeiten sind zum besseren Verständniss natürlich übertrieben):
- der Timer zum Ausführen für nix() wird auf 5 Sekunden gesetzt
- die Ausführung von MM_showHide... plus das JS brauchen 1 Sekunde
- nach 1 Sekunde: hat der Timer jetzt den Wert 4 und (!)
- das JS setzt den Timer wieder auf 5
=> falls das ohne 'clearTimeout()' überhaupt geht (?)
-- wird die Funktion nix() _nur_ 1x, und zwar nach Beendigung des Skripts (+ 5 Sekunden) aufgerufen (bzw. wenn das Skript in einem endlos-loop liegt _niemals_)
=> falls sich der laufende Timer nicht überschreiben (neu setzen) lässt:
--- wird das JS und die Funktion MM_showHide... 5x ausgeführt
--- und genau nach Beendigung des 5. MM_showHide... hat der Timer den Wert 0 erreicht
--- ergo wird jetzt die Funktion nix() aufgerufen
Problem:
im 1. Fall (timer wird überschrieben) ist der Ablauf Laufzeitbedingt, d.h. ist _NICHT_ vorhersehbar
(genausogut kann ja der Timerwert kleiner sein als die Dauer, in dem Fall würde nix() _irgendwo_ dazwischenfunken)
im 2. Fall erscheint es mir irgendwo sinnlos die Funktion nix() nur sporadisch aufzurufen - dies könnte man auch ohne Timer z.B. mit einem Zähler lösen
Gesamtproblem:
Ich kann auf Grund des Skripts nicht erkennen wann nix() eigentlich starten soll
Versuchen wir's vielleicht mit einem einfachen Ablaufplan:
1. Layer anzeigen
2. Verzögerung
3. Layer ausblenden
4. Verzögerung
5. weiter bei 1.
Wenn es das ist was du willst, kommst du mit zwei Funktionen aus:
function layerEin()
1. Layer einblenden
2. Layerwert erhöhen
3. Timer für layerAus() setzen
function layerAus()
1. Layer ausblenden
2. Timer für layerEin() setzen
MfG McNavc