Mathias Beyer: JavaScript setTimeOut

guten tag,

ich habe ein Problem folgender art. Ich wollte eine Funktion mit zwei setTimeOut's erstellen und weis nicht wie die Befehlshierachie ist.
Ich hab bei SelfHTML etwas gefunden was dem entspricht aber ich verstehe die Reihenfolge nicht.

<script type="text/javascript">  
			var b = new Array();  
			  
			b[0] = new Image(); b[0].src = "3st_hnds.gif";  
			b[1] = new Image(); b[1].src = "3st_slpt.gif";  
			b[2] = new Image(); b[2].src = "3st_look.gif";  
			b[3] = new Image(); b[3].src = "3st_shak.gif";  
			  
			var i = 0;  
  
			function Animation () {  
				if (i > 3) {  
    				i = 0;  
  					document.images[0].src = b[i].src;  
  					i = i + 1;  
  					window.setTimeout("Animation()", 1000);  
					};  
				  
  
			window.setTimeout("Animation()", 1000);  
		</script>

egal wo ich die geschweifte klammer hinsetze und wieder schließe, es ist falsch. kann mir irgend jemand helfen?
Danke im Voraus

Mathias

  1. <script type="text/javascript">

    var b = new Array();

    b[0] = new Image(); b[0].src = "3st_hnds.gif";
    b[1] = new Image(); b[1].src = "3st_slpt.gif";
    b[2] = new Image(); b[2].src = "3st_look.gif";
    b[3] = new Image(); b[3].src = "3st_shak.gif";

    var i = 0;

    function Animation () {
       if (i > 3) i = 0;
       document.images[0].src = b[i].src;
       i++;;
       window.setTimeout("Animation()", 1000);
    };

    window.onload=Animation;
    </script>

    
    
    1. if (i > 3) i = 0;  
        
      document.images[0].src = b[i].src;  
      i++;;  
      window.setTimeout("Animation()", 1000);
      

      vielen Dank aber soweit war ich auch schon aber mein problem ist ob i = 0; zu der If abfrage
      gehört und wo die geöffneten geschweiften klammern geblieben sind  und ob dieser block von document bis zum settimeout nich in den container der die bedingung mit IF trägt zugehört oder nicht und wenn nicht wo hört dan der container auf. das war meine frage.

      1. vielen Dank aber soweit war ich auch schon aber mein problem ist ob i = 0; zu der If abfrage

        ja

        gehört und wo die geöffneten geschweiften klammern geblieben sind

        überflüssig, denn nur i=0, eine Anweisung, gehört zur if-Abfrage

        und ob dieser block von document bis zum settimeout nich in den container der die bedingung mit IF trägt zugehört oder nicht

        letzteres

        und wenn nicht wo hört dan der container auf. das war meine frage.

        der Anweisungsblock enthält einzig i=0; deshalb sind die {} drumherum überflüssig!

        Der Inhalt der Funktion lautet:
        wenn i>3 ist, also keinen gültigen Wert hat, setze i=0.
        nimm das Bild mit dem Index i
        Erhöhe i um 1
        Warte 1000ms und führe die Funktion nochmals aus

        Ist jetzt klar, warum die IF-Abfrage nur mit der Anweisung i=0 einen Sinn ergibt?

      2. Lieber mathias,

        if (i > 3) i = 0;
        [...]
        mein problem ist ob i = 0; zu der If abfrage
        gehört und wo die geöffneten geschweiften klammern geblieben sind  und ob dieser block von document bis zum settimeout nich in den container der die bedingung mit IF trägt zugehört oder nicht und wenn nicht wo hört dan der container auf. das war meine frage.

        da kann ich Dir weiterhelfen.

        Nach dem Schlüsselwort "if" steht ein Klammernpaar, in dem ein Audruck steht, der entweder als "true" oder "false" gewertet werden kann. Soweit warst Du schon. Aber nun steht nach dem Klammernpaar entweder _eine_ Anweisung, oder ein durch geschweifte Klammern zusammengefasster Anweisungs_block_. Beides ist möglich, ersteres ist schreibfaul, da wegen einer einzigen Anweisung kein ganzer Block notiert werden braucht und man sich so die Klammern sparen kann.

        Beispiel1:

        if (bedingung)  
            alert("bedingung erfüllt"); // "Einzelanweisung" da keine geschweiften Klammern  
        alert("ich erscheine immer");
        

        Beispiel2:

        if (bedingung) {  
            alert("bedingung erfüllt");  
            alert("ich erscheine nicht immer");  
            alert("ich erscheine auch nicht immer");  
        } // Ende des Anweisungsblocks  
          
        alert("ich erscheine immer");
        

        Ist das nun klarer geworden?

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. Hallo Mathias Beyer,

    ist für Dein Problem nicht eher ein http://de.selfhtml.org/javascript/objekte/window.htm#set_interval@title=setInterval sinnvoller?

    Mit freundlichem Gruß
    Micha

    --
    simple JavaScript Spiele: Snake, MineSweeper, Sudoku oder Tetris
    1. Hallo Micha,

      hmm, weis nicht. wo ist den der unterschied zu setInterval und setTimeOut.
      Wäre schön wenn mir das mal jemand erklären könnte. Ich bin relativ neu im Jvascript bereich.

      1. Hallo Mathias Beyer,

        hmm, weis nicht. wo ist den der unterschied zu setInterval und setTimeOut.

        Den findest Du wohl gut im angegeben Link erklärt. Während ein Timeout "eine Anweisung nach einer bestimmten Verzögerungszeit aus(führt)." wird bei setInterval die "Anweisung [...] in einem festgelegten Rhythmus immer wieder" ausgeführt.

        Ich bin relativ neu im Jvascript bereich.

        aber dem Link hättest Du schon folgen können, oder? ;-)

        Mit freundlichem Gruß
        Micha

        --
        simple JavaScript Spiele: Snake, MineSweeper, Sudoku oder Tetris
        1. hallo Micha,

          ich bin etwas schusselig deshalb habe ich den Link net gesehen vielen dank nochmals