Sebastian Lagemann: setTimeout und variablen im Funktionsaufruf

Hallo,

ich habe ein Problem, und zwar möchte ich eine Variable Anzahl von Layern mit setTimeout sekündlich verändern. Die Layer selbst werden von einem PHP Script bereitgestellt, welches auch die setTimeout Funktion aufruft. Das Problem ist nun, dass ich gerne die Funktion, die für das Verändern des Layers zuständig ist, mit Parametern aufrufen möchte. Geht das überhaupt, da anscheinend keine Parameter aktzeptiert werden? Gibt es eine andere Möglichkeit?

Vielen Dank im voraus,

Sebastian

  1. Hi,

    gib doch mal ein wenig Quellcode zum gucken.

    Meiner Meinung nach würfelst du da server- und clientseitige Scripts ein wenig zusammen.

    m.

    1. Hi,

      gib doch mal ein wenig Quellcode zum gucken.

      Meiner Meinung nach würfelst du da server- und clientseitige Scripts ein wenig zusammen.

      m.

      hmm, nein, eigentlich nicht. Es geht darum, dass ich eine Zeit rückwärts runterlaufen lasse. Dies nicht nur einmal sondern ebend je nach Situation auch mehrmals, die anzahl ist variabel.

      Derzeit habe ich es folgendermassen:

      zeit = "12:00:00";
      window.setInterval(countdown(),1000);

      function countdown() {
         ** mache irgendwas mit Variable zeit und Layern**
      }

      Die Variablen, die in der Funktion countdown benutzt wird, ist in dem Sinne global, was bei 1 oder 2 Zahlen durchaus vertretbar ist, indem man zwei verschiedene variablen nimmt. Dies liesse sich zwar auch mit >2 Funktionen machen, jedoch ist das programmiertechnisch extrem unsauber und unschön.

      any hints?

      1. Hallo,

        Derzeit habe ich es folgendermassen:

        zeit = "12:00:00";
        window.setInterval(countdown(),1000);

        window.setInterval('countdown("'+zeit+'")',1000);

        Du kannst aber *nur* Basis-Datentypen uebergeben. Abstrakte Datentypen
        wie Objekte oder Arrays muesstest du serialisieren.

        Gruesse,
         CK

  2. Hi,

    du kannst die sitTimeout Funktion in etwa so aufrufen:

    setTimeout("myFunc("+param1+","+param2+")",1000);

    ein direkter "Einbau" der Variablen ist nur möglich wenn diese Global sind.

    Viele Grüße

    ueps

    1. Hallo,

      du kannst die sitTimeout Funktion in etwa so aufrufen:
      setTimeout("myFunc("+param1+","+param2+")",1000);

      Klappt bei mir leider nicht. Habe nämlich das gleiche Problem.
      Da kommt immer der Debug-Fehler mit Variable 'object' ist undefiniert.

      Hier mal die Funktion:

      function ScrollTo(object,x)
       {
        object.xpos = parseInt(object.left);

      if (object.xpos < x)
         {
          object.xpos += 10;
          object.left = object.xpos;
          setTimeout('ScrollTo('+object+','+x+')',100);
         }
       }

      Das Layer ist im Moment bei x=100 und soll bspw. nach x=300 in 10er-Schritten gescrollt werden.

      Weiss jemand weiter, warum das bei mir nicht funzt?

      Gruss
      Torsten

      1. Hallo,

        Klappt bei mir leider nicht. Habe nämlich das gleiche Problem.
        Da kommt immer der Debug-Fehler mit Variable 'object' ist
        undefiniert.

        Das geht natuerlich nur mit Basis-Datentypen. Also Strings und
        Zahlen.

        Gruesse,
         CK

        1. Hallo,

          Das geht natuerlich nur mit Basis-Datentypen. Also Strings und
          Zahlen.

          Danke für den Tip :D!

          Ich übergebe jetzt nicht gleich das ganze Objekt sondern nur die ID. Funzt hervorragend! *Jetzt* bin ich endlich fähig, was anderes zu machen :)

          Gruss
          Torsten