Struppi: Parameter an Funktion in Funktion übergeben

Beitrag lesen

Folgender Code sollte mir im Sekundentakt von 1 an nach oben zählen.
Dachte ich zumindest.

falsch gedacht ;-)

<script type="text/javascript">

function test(foo){
    document.getElementById('bla').innerHTML = foo;
    foo++;
    var loop = setInterval(test(foo), 1000);

du rufst hier die Funktion test() auf, die dann wieder an die Stelle kommt und dann test() aufruft usw...

Ein Interval wird nie aufgerufen, da der Rückgabewert von test() undefiniert ist, er müßte aber eine Funktionsreferenz sein.

Deshalb:

Die Fehlerkonsole sagt "too much recursion" und im div steht 3000.

Du möchtest ein closure verwenden:

[code lang=javascript]var loop = window.setInterval(function() { test(foo);}, 1000);

  
Allerdings würde ich dass nicht empfehlen, da du dann jede Sekunde einen neuen Interval startest, der dann wieder jede Sekunde einen Interval startet usw.  
  
Daher besser:  
`var loop = window.setTimeout(function() { test(foo);}, 1000);`{:.language-javascript}  
  

> Schreibe ich `var loop = setInterval('test(foo)', 1000);`{:.language-javascript} zeigt mir die Fehlerkonsole jede Sekunde "foo is not defined" und im div bleibt 1 stehn.  
  
Weil dann die Funktion im Kontext von window ausgeführt wird und dort ist foo nicht definiert.  
  
Struppi.