JavaScript Pausieren
Gerrit
- javascript
Hallo.
Ich werd noch wahnsinnig. Gibt es nicht eine einfache Funktion zum pausieren eines Scripts für sagen wir mal 2 Sekunden? Bis jetzt hab ich es mit einer Schleife gelöst aber das kanns ja nicht sein.
function WechselMitPause()
{
Farbwechsel();
for i = 0 to 10000..
Farbwechsel();
}
Also, das läuft jetzt natürlich nicht, aber so in etwa sieht es aus. Eben hatte ich etwas von "setTimeout" gelesen, das kommt zwar schon näher aber ich müßte es immer noch extrem umschreiben, gibt es nicht sowas wie "delay" oder "sleep"??
mfg
Gerrit
Hi!
Es gibt keine Pause in JS. Du kannst etwas zeitverzögert aufrufen, allerdings läuft während dieser Zeitverzögerung das Script weiter.
siehe </archiv/>, wenn es denn funktioniert *g*
Gruß
md
Ich werd noch wahnsinnig. Gibt es nicht eine einfache Funktion zum pausieren eines Scripts für sagen wir mal 2 Sekunden? Bis jetzt hab ich es mit einer Schleife gelöst aber das kanns ja nicht sein.
Wenn du unbedingt eine brauchst:
function pause(zeit){
//Zeit hier in ms angeben
starttime=(new Date).getTime();
while (starttime+zeit>(new Date).getTime()){};
}
Das bedeutet aber auf vielen Systemen 100% CPU Last für eine leere Schleife.
function WechselMitPause()
{
Farbwechsel();
for i = 0 to 10000..
Farbwechsel();
}
eleganter ist der Weg über setTimeout.
function WechselMitPause()
{
Farbwechsel();
window.setTimeout('Farbwechsel()', 2000);
Allerdings darf dann natürlich hier nichts mehr kommen. Besser ist es du läßt deine Funktion farbwechsel sich selber aufrufen.
Struppi.
Wenn du unbedingt eine brauchst:
function pause(zeit){
//Zeit hier in ms angeben
starttime=(new Date).getTime();
while (starttime+zeit>(new Date).getTime()){};
}Das bedeutet aber auf vielen Systemen 100% CPU Last für eine leere Schleife.
Das wäre nicht so toll..
function WechselMitPause()
eleganter ist der Weg über setTimeout.
Nebenbei klappt oben beschriebener nicht, er wechselt die Farben nicht, die Pause merke ich zwar aber es passiert nichts :(
window.setTimeout('Farbwechsel()', 2000);
Allerdings darf dann natürlich hier nichts mehr kommen. Besser ist es du läßt deine Funktion farbwechsel sich selber aufrufen.
Das wäre noch eine Möglichkeit, ich kann auch einfach das Intervall für die nächsten Farbwechsel erhöhen da es eine Animation wird, vielleicht klappt das ja..danke schonmal :)
mfg
Gerrit
hi,
Das wäre noch eine Möglichkeit, ich kann auch einfach das Intervall für die nächsten Farbwechsel erhöhen da es eine Animation wird, vielleicht klappt das ja..danke schonmal :)
wenn du die funktion sowieso immer wieder mit einem gewissen zeitabstand aufrufen willst, schau dir lieber setInterval() an.
gruss,
wahsaga
wenn du die funktion sowieso immer wieder mit einem gewissen zeitabstand aufrufen willst, schau dir lieber setInterval() an.
Hab ich mir angesehen, nun kam folgendes Problem auf: So wie es in Selfhtml erklärt ist klappt es wunderbar da die Variable der window.setInterval() zugeordnet ist öffentlich ist. Nun rufe ich aber setInterval() aus einer Funktion auf und irgendwie klappt das nicht ganz mit dem löschen des Intervalls, Code sieht so aus:
// Zeigt die Animation
function ShwAnimation()
{
//Verschiedene Funktionen
var aktiv = window.setInterval("FldAnimate(1)",100);
}
function FldAnimate(field)
{
// Animiert den gewünschten Part
i = i + 1;
if(i >= 10)
window.clearInterval(aktiv);
}
Das gibt ein "'aktiv' ist undefiniert" zurück :( "i" ist als Globale Variable am Anfang des Script definiert, ich bin mir jetzt aber nicht sicher ob es bei JS einen Unterschied zwischen Lokalen und Globalen Variablen gab..ist schon ein bischen her seit ich was mit JS gemacht habe.
mfg
Gerrit
hi,
function ShwAnimation()
{
//Verschiedene Funktionen
var aktiv = window.setInterval("FldAnimate(1)",100);
aktiv ist jetzt eine lokale variable innerhalb der funktion ShwAnimation().
function FldAnimate(field)
...
window.clearInterval(aktiv);
diese funktion kennt die variable demzufolge natürlich nicht.
ich bin mir jetzt aber nicht sicher ob es bei JS einen Unterschied zwischen Lokalen und Globalen Variablen gab..
ja, nachzulesen unter http://selfhtml.teamone.de/javascript/sprache/variablen.htm#definieren.
gruss,
wahsaga
function FldAnimate(field)
...
window.clearInterval(aktiv);diese funktion kennt die variable demzufolge natürlich nicht.
Eine Idee das zu ändern? Ich kann ja kaum bei der Zuweisung von aktiv, aktiv selbst der Funktion übergeben (schon probiert).
ich bin mir jetzt aber nicht sicher ob es bei JS einen Unterschied zwischen Lokalen und Globalen Variablen gab..
ja, nachzulesen unter http://selfhtml.teamone.de/javascript/sprache/variablen.htm#definieren.
Danke schonmal :)
Hat sich erledigt.
var aktiv; am Anfang des Scripts und die Variable ist Global definiert..manchmal hat man ein riesen Brett vorm Kopf wenn die Lösung so nahe liegt ;)
Danke für eure Hilfe,
Gerrit