austriaman
Mitglied
Hallo,
ok, ich bastle nach wie vor an einer verzwickten setTimeout-Variation und muss gestehen, dass ich mit meinem Latein ein wenig am Ende bin.
Kurze Beschreibung des gewünschten Endresultats:
Gegeben sind eine gewissen Anzahl an (hier exemplarisch 10) Sets von je 3 <DIV>s [mit durchnummerierten IDs: ID_1, ID_2, ID_3, ID_4, ...], die via setTimeout ein-/ bzw. ausgeblendet werden sollen.
Dabei soll <DIV 1> zwei Sekunden lang, <DIV 2> vier Sekunden lang und <DIV 3> eine Sekunde lang angezeigt werden, danach beginnt der Spaß mit dem nächsten Set von Neuem.
Zu dem Thema gibt's im Netz ja schon massig Material - habe daher versucht, ähnliche Problemlösungen auf stackoverflow zu implementieren, bin aber gescheitert.
Meine ursprüngliche [sehr naive] Herangehensweise sah folgendes vor:
Ich bin mir auch durchaus der Problematik der globalen "zeit" Variable bewusst (bzw. glaube ich, das als eines der Probleme identifiziert zu haben) - ich glaube weiters auch richtig verstanden zu haben, dass die for-Schleife den setTimeout-Funktionen "davonläuft", und daher eine Implementierung wie die hier vorgestellte nicht funktionieren und zulässig sein kann.
Nur - wie kriege ich die Sache sonst in den Griff?
Danke an alle ernst gemeinten Hilfestellungen!
LG,
aut.
ok, ich bastle nach wie vor an einer verzwickten setTimeout-Variation und muss gestehen, dass ich mit meinem Latein ein wenig am Ende bin.
Kurze Beschreibung des gewünschten Endresultats:
Gegeben sind eine gewissen Anzahl an (hier exemplarisch 10) Sets von je 3 <DIV>s [mit durchnummerierten IDs: ID_1, ID_2, ID_3, ID_4, ...], die via setTimeout ein-/ bzw. ausgeblendet werden sollen.
Dabei soll <DIV 1> zwei Sekunden lang, <DIV 2> vier Sekunden lang und <DIV 3> eine Sekunde lang angezeigt werden, danach beginnt der Spaß mit dem nächsten Set von Neuem.
Zu dem Thema gibt's im Netz ja schon massig Material - habe daher versucht, ähnliche Problemlösungen auf stackoverflow zu implementieren, bin aber gescheitert.
Meine ursprüngliche [sehr naive] Herangehensweise sah folgendes vor:
Code:
var aktiv = 1; // bestimmt, welches DIV aktiv ist, daher angezeigt werden soll
var zeit = 0; // bestimmt die Zeitintervalle
var Durchlauf_2s;
var Durchlauf_4s;
var Durchlauf_1s;
for (var i=0; i<=9; i++) { // 10 Durchgänge
document.getElementById("ID_" + aktiv).style.display = "block";
if (aktiv > 1) { // if-Kondition kommt für den ersten Durchlauf nicht zustande, da 1. DIV aktiv ist.
document.getElementById("ID_" + (aktiv - 1)).style.display = "none";
}
aktiv++; // "aktiv" wird auf die nächsthöhere ID gesetzt gesetzt
Durchlauf_2s = setTimeout(function() {
zeit = zeit + 2000; // nach 0 + 2000, daher nach einem Zeitintervall von 2000 wird das Timeout aktiv
document.getElementById("ID_" + (aktiv - 1)).style.display = "none";
document.getElementById("ID_" + aktiv).style.display = "block"; //
aktiv++;
}, zeit)
Durchlauf_4s = setTimeout(function() {
zeit = zeit + 4000;
document.getElementById("ID_" + (aktiv - 1)).style.display = "none";
document.getElementById("ID_" + aktiv).style.display = "block";
aktiv++;
}, zeit)
Durchlauf_1s = setTimeout(function() {
if (aktiv > 1) {
zeit = zeit + 1000;
document.getElementById("ID_" + (aktiv - 1)).style.display = "none";
document.getElementById("ID_" + aktiv).style.display = "block";
aktiv++;
}
}, zeit)
}
Ich bin mir auch durchaus der Problematik der globalen "zeit" Variable bewusst (bzw. glaube ich, das als eines der Probleme identifiziert zu haben) - ich glaube weiters auch richtig verstanden zu haben, dass die for-Schleife den setTimeout-Funktionen "davonläuft", und daher eine Implementierung wie die hier vorgestellte nicht funktionieren und zulässig sein kann.
Nur - wie kriege ich die Sache sonst in den Griff?
Danke an alle ernst gemeinten Hilfestellungen!
LG,
aut.