Sebastian Salzgeber: clearInterval Dynamisch machen

Hi

Ich habe eine Funktion die mit einem Atribut übergeben wird, welches den Typennamen trägt. Anhand dieses Typennamen wird ein Array angesprochen aus das es sich dynamisch die benötigten Werte holt.

Mein Problem besteht jedoch im stoppen den Intervals den ich zuvor statisch gesetzt habe.

Timer01 = window.setInterval("moveLThead('"+DIVType+"')",30);

Das Stoppen ist statisch kein Problem:

window.clearInterval(Timer01);

Jedoch soll die Funktion ja unabhängig (also dynamisch) arbeiten und daher brauche ich etwas wie:

//Array-Sammmlung Global
Variable[1]='Timer01';

//In der Funktion als Dynamischer Wert
window.clearInterval(Variable[1]);

Ich habe überlegt gleich as ganze setInterval ins Array zu schreiben aber dann startet es ja schon direkt beim definieren.

Wie kann ich also den clearInterval Dynamisch ansprechen?

ciao

--
sh:) fo:| ch:{ rl:( br:& n4:~ ie:| mo:? va:{ de:< zu:| fl:) ss:| ls:< js:|
  1. hi,

    Ich habe eine Funktion die mit einem Atribut übergeben wird, welches den Typennamen trägt. Anhand dieses Typennamen wird ein Array angesprochen aus das es sich dynamisch die benötigten Werte holt.

    bitte was?

    Mein Problem besteht jedoch im stoppen den Intervals den ich zuvor statisch gesetzt habe.
    Timer01 = window.setInterval("moveLThead('"+DIVType+"')",30);
    Das Stoppen ist statisch kein Problem:
    window.clearInterval(Timer01);

    Jedoch soll die Funktion ja unabhängig (also dynamisch) arbeiten und daher brauche ich etwas wie:

    //Array-Sammmlung Global
    Variable[1]='Timer01';

    //In der Funktion als Dynamischer Wert
    window.clearInterval(Variable[1]);

    warum nutzt du dann nicht sowas wie
    var meineTimeouts["Timeout1"] = window.setInterval(...);

    window.clearInterval(meineTimeouts["Timeout1"]);

    den index "TimeoutXY" kannst du dir dann ja nach belieben aus variablen zusammensetzen.

    Ich habe überlegt gleich as ganze setInterval ins Array zu schreiben aber dann startet es ja schon direkt beim definieren.

    nochmals: bitte was?

    eine alternative wäre (bei globalen variablen) diese über die schreibweise window["varname"] anzusprechen - dabei kannst du dir "varname" auch beliebig zusammenbasteln.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      Ich habe eine Funktion die mit einem Atribut übergeben wird, welches den Typennamen trägt. Anhand dieses Typennamen wird ein Array angesprochen aus das es sich dynamisch die benötigten Werte holt.

      bitte was?

      Ersetze Atribut durch Parameter und dir geht ein Licht auf.

      Ich habe überlegt gleich as ganze setInterval ins Array zu schreiben aber dann startet es ja schon direkt beim definieren.
      nochmals: bitte was?

      Beschreibt _genau_ das:

      warum nutzt du dann nicht sowas wie
      var meineTimeouts["Timeout1"] = window.setInterval(...);

      mit dem Problem dass der Intervall anfängt zu laufen sobald ich ihn definiere. Was ja nicht Sinn der Sache sein sollte.

      eine alternative wäre (bei globalen variablen) diese über die schreibweise window["varname"] anzusprechen - dabei kannst du dir "varname" auch beliebig zusammenbasteln.

      bitte was?

      gruss

      --
      sh:) fo:| ch:{ rl:( br:& n4:~ ie:| mo:? va:{ de:< zu:| fl:) ss:| ls:< js:|
      1. warum nutzt du dann nicht sowas wie
        var meineTimeouts["Timeout1"] = window.setInterval(...);

        mit dem Problem dass der Intervall anfängt zu laufen sobald ich ihn definiere. Was ja nicht Sinn der Sache sein sollte.

        Vielleicht beschreibst du genauer was du willst. Denn natürlich ist es der Sinn der Sache, dass ein Interval anfängt zu laufen in dem Moment wo du ihn startest.

        Struppi.

        1. Ich gebe jetzt einfach mal den kompletten Code aus auch wenn das es vielleicht noch verwirrender macht

          =====================================================================

          var GvLSet = new Array();
          GvLSet['LSet01']=new Array();
          GvLSet['LSet01'][0]='LTMoveableConsole01'; //Container-ID
          GvLSet['LSet01'][1]='DIVInt01';   //SchlüsselTimer
          GvLSet['LSet01'][2]=-190;   //Startposition
          GvLSet['LSet01'][3]=0;    //Entposition
          GvLSet['LSet01'][4]=10;    //Schrittgeschw.
          GvLSet['LSet01'][5]=-190;   //SwingValue

          function GLOBALxDIVmove(DIVType,DIVArray){
          DIVmain = document.getElementById(GvLSet[DIVArray][0]).style;
          if(DIVType==1){
            if(GvLSet[DIVArray][5]<GvLSet[DIVArray][3]){
             GvLSet[DIVArray][5]+=GvLSet[DIVArray][4];
             DIVmain.top=GvLSet[DIVArray][5]+"px";
             DIVmain.top=GvLSet[DIVArray][5]+"px";
            }else{window.clearInterval(DIVInt01);}  //window.clearInterval(GvLSet[DIVArray][1]);
          }else{
            if(GvLSet[DIVArray][5]>=GvLSet[DIVArray][2]){
             GvLSet[DIVArray][5]-=GvLSet[DIVArray][4];
             DIVmain.top=GvLSet[DIVArray][5]+"px";
             DIVmain.top=GvLSet[DIVArray][5]+"px";
            }else{window.clearInterval(DIVInt01);}  //window.clearInterval(GvLSet[DIVArray][1]);
          }
          }

          function PrepareMove(DIVType,DIVArray){
          if(DIVArray=='LSet01'){
            if(DIVType){
            DIVInt01 = window.setInterval("GLOBALxDIVmove('"+DIVType+"','"+DIVArray+"')",30);
            }else{
            DIVInt01 = window.setInterval("GLOBALxDIVmove('"+DIVType+"','"+DIVArray+"')",30);
            }
          }else if(DIVArray=='LSet02'){
          //Und so weiter
          }
          }

          =====================================================================

          Beschreibung:
          Die Funktion wird aufgerufen PrepareMove(1,'LSet01')
          Der Timer wird gestartet
          Die Funktion GLOBALxDIVmove(1,'LSet01') wird aufgerufen
          Sie führt Ihre Anweisungen aus (nebensächlich).
          Jetzt soll am ende (auskommentiert) der Interval dynamisch beendet werden.

          ...doch wie?
          Wenn ich den SetInterval() ins Array schreibe wird dieser ja direct onLoad gestartet. Der jeweilige Timer soll ja aber erst beim Funktionsaufruf gestartet werden.

          Ich hoffe das hilft nun weiter.

          --
          sh:) fo:| ch:{ rl:( br:& n4:~ ie:| mo:? va:{ de:< zu:| fl:) ss:| ls:< js:|
          1. Beschreibung:
            Die Funktion wird aufgerufen PrepareMove(1,'LSet01')

            prepareMove erscheint mir überflüssig. Zumindest in der Konstellation, du brauchst einen timer ja nicht zu 'preparen' da er wie du gemerkt hast direkt gestartet wird.

            Wenn ich den SetInterval() ins Array schreibe wird dieser ja direct onLoad gestartet. Der jeweilige Timer soll ja aber erst beim Funktionsaufruf gestartet werden.

            Dann starte ihn einfach dort.

            Struppi.

            1. Ich habe es jetzt mit einer weiteren Funktion realisiert.
              Jetzt läuft es astrein und ist extrem Dynamisch =)

              Danke dennoch... JavaScript ist Toll! =)

              --
              sh:) fo:| ch:{ rl:( br:& n4:~ ie:| mo:? va:{ de:< zu:| fl:) ss:| ls:< js:|
      2. hi,

        Ich habe eine Funktion die mit einem Atribut übergeben wird, welches den Typennamen trägt. Anhand dieses Typennamen wird ein Array angesprochen aus das es sich dynamisch die benötigten Werte holt.

        bitte was?

        Ersetze Atribut durch Parameter und dir geht ein Licht auf.

        die diskussion über deinen pampigen tonfall, wenn man dich bittet mal etwas deutlicher zu formulieren, was du eigentlich willst, hatten wir glaube ich schon mal.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }