JavaScript JavaScript setTimeout

izakstern

Cadet 3rd Year
Registriert
Apr. 2011
Beiträge
49
Hallo Community,

ich habe hier nen ganz simples JavaScript geschrieben, bin aber irgendwie zu Blöd es richtig umzusetzen. Also ich möchte im Prinzip (erstmal ganz rudimentär) das ein Block mit Newsartikeln sich von rechts nach links bewegt und bei jedem Artikel eine kurze Pause macht. (Dieses Script ist wie gesagt erstmal nur zum Erstellen der Grundfunktionen).

Das Laufen von rechts nach links klappt ja nun wunderbar. Jedoch verstehe ich das mit dem Timeout in der ersten Funktion nicht ganz, müsste er nicht nach dem ersten 400 Pixel durchlauf erst wieder warten? Denn diese Pause von 3 Sek. macht er beim ersten Mal, aber nicht beim zweiten..

var pos = 0;
var step = 1;
function newstext()
{
setTimeout("move = window.setInterval('moveIt()', 30)","3000");
step=2;
setTimeout("move = window.setInterval('moveIt()', 30)","3000");
}
function moveIt()
{
var endposition=(step*400)*(-1);

pos = pos - 1;
document.getElementById("newsfilm").style.left = (pos + "px");
if(pos==(endposition))
{
clearInterval(move);
}
}

LG izak
 
settTmeout arbeitet asynchron, nach dem ersten Aufruf von setTimeout geht's direkt mit dem Code drunter weiter, das heißt da blockiert nichts. Deshalb laufen beide setTimeout-Methoden quasi zeitgleich ab.

Wenn du dazwischen eine Pause möchetst, dann könntest du es rekursiv lösen, Prinzip:

Code:
function recurs() {
   //hier deine Abbruchbedingung prüfen, falls true, dann return
   // hier dein Code
  setTimeout(function() { recurs(); },3000);
}
 
Zuletzt bearbeitet:
Zurück
Oben