Chris: Problem mit Parameterübergabe bei setTimeout

Hallo Forum!

Ich hab ein Problem beim Aufruf einer Funktion mit setTimeout aus einer zweiten Funktion heraus. Der Parameter, den ich übergeben will, kommt scheinbar "nicht an", da sowohl NS 4.5 als auch IE 4.7 "undefined" ausgeben.

Zum besseren Verständnis, das Gebilde soll nach folgendem Schema ablaufen:

var x,y,z;  
  
function tuwas(z)  
{  
alert(z);  
}  

function timeout(y)  
{  
window.setTimeout("tuwas(y)",4000);  
}  

z = 5;  
timeout(x);  

Schau ich seit Stunde auf einen Denkfehler, oder wird das so wirklich von beiden Browsern nicht interpretiert? Bei einem direkten Aufruf von tuwas(), also nicht aus timeout() heraus, funktioniert das ganze ja auch...

Also vielen Dank für Hilfe schon im Voraus...

Chris

  1. Hallo Chris,

    »»  function timeout(y)
    »»  {
    »»  window.setTimeout("tuwas(y)",4000);
    »»  }
    Dein Problem ist, daß Du bei setTimeout als ersten Parameter einen String übergeben mußt.
    Das heißt, daß Du in deinem Beispiel nicht den Inhalt von y sonder einfach den Wert 'y' übergibst.
    (Ich denk grad drüber nach, was da eigentlich jetzt wirklich passiert, weil y hier ja weder eine Zahl noch eine String-Konstante ist. Hmm? .... Naja ist momentan nicht so wichtig)

    Richtiger wäre es, wenn Du das folgendermaßen machst:
    Wenn y eine Zahl ist, dann

    function timeout(y)
       {
       window.setTimeout('tuwas(' + y + ')',4000);
       }

    wenn in 'y' ein Text ist, dann:

    function timeout(y)
       {
       window.setTimeout('tuwas("' + y + '")',4000);
       }
    (Aufpassen, da sind jetzt Anführungszeichen dazugekommen. nicht übersehen!)

    Ich denk, das wär's.

    Grüße
    Klaus

    1. Hallo Chris,

      Dein Problem ist, daß Du bei setTimeout als ersten Parameter einen String übergeben mußt.
      Das heißt, daß Du in deinem Beispiel nicht den Inhalt von y sonder einfach den Wert 'y' übergibst.

      Ich denk, das wär's.

      Grüße
      Klaus

      Hi Klaus,

      Danke vielmals für die schnelle Antwort!!!

      's fuktioniert natürlich, habs in meinem konkreten fall gerade ausprobiert.

      Bis dann Chris