JavaScript - ukončení funkce z předešlé podmínky

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
JavaScript - ukončení funkce z předešlé podmínky
« kdy: 07. 11. 2018, 10:24:23 »
Ahoj...
Lze provést ukončení funkce z předešlé podmínky?
Zkouším to pomocí clearTiemout, ale nevede se mi to.

Kliknutím na obrázek v carouselu, dostanu ten nakliknutý obrázek do stavu 'active', vyvolají se akce a jedna z nich je funkce s nastaveným TimeOutem.
Jenže pokud stihnu v tom nedoběhlém Timeoutu dostat do statusu 'active' jiný/nový obrázek, tak potřebuji aby se předešlá funkce v již běžícím Timeoutu zastavila.

Kód: [Vybrat]
if ($("#104_carousel  > div.carousel-wrapper >  img.carousel:nth-child(1)").hasClass("active")){
if ( $("#z-type").is(":checked") ){
  if ( $("#z-type").is(":checked") ){
    $('#D30').click();
    var timeOut = setTimeout(function(){ $('#D10').click(); }, 3000);
    }
}
     else if ( $("#f-type").is(":checked") ){
    $('#D40').click();
    var timeOut = setTimeout(function(){ $('#D10').click(); }, 3000);
    }
     else { $('#D40').click(); }
}

else if ($("#104_carousel  > div.carousel-wrapper >  img.carousel:nth-child(2)").hasClass("active")){
if ( $("#f-type").is(":checked") ){
      clearTimeout(timeOut);
      $('#D30').click();
      timeOut = setTimeout(function(){ $('#D10').click(); }, 6000);
}
else{}
}
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


Re:JavaScript - ukončení funkce z předešlé podmínky
« Odpověď #1 kdy: 07. 11. 2018, 10:40:17 »
Ano, lze. Ale musíte si tu návratovou hodnotu z funkce setTimeout() uložit do nějaké proměnné nebo objektu, který bude dostupný i při tom příštím volání kódu, kde je to setTimeout(). U jednoduchého kódu to může být globální proměnná, jakmile je to trošku složitější, je dobré ta data nějak zapouzdřit – buď pomocí objektu, nebo v JavaScriptu pomocí scope vnořených funkcí (vizte třeba Základní vzory pro vytváření jmenných prostorů v JavaScriptu).

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:JavaScript - ukončení funkce z předešlé podmínky
« Odpověď #2 kdy: 07. 11. 2018, 10:46:25 »
Ano, lze. Ale musíte si tu návratovou hodnotu z funkce setTimeout() uložit do nějaké proměnné nebo objektu, který bude dostupný i při tom příštím volání kódu, kde je to setTimeout(). U jednoduchého kódu to může být globální proměnná, jakmile je to trošku složitější, je dobré ta data nějak zapouzdřit – buď pomocí objektu, nebo v JavaScriptu pomocí scope vnořených funkcí (vizte třeba Základní vzory pro vytváření jmenných prostorů v JavaScriptu).
to je na mě moc složité, jak jsem lama
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:JavaScript - ukončení funkce z předešlé podmínky
« Odpověď #3 kdy: 07. 11. 2018, 10:54:48 »
a přitom stačilo tak málo :ú
deklarovat tu proměnou mimo podmínku
Kód: [Vybrat]
var timeOut = 0;
if ($("#104_carousel  > div.carousel-wrapper >  img.carousel:nth-child(1)").hasClass("active")){
if ( $("#z-type").is(":checked") ){
  if ( $("#z-type").is(":checked") ){
    $('#D30').click();
    var timeOut = setTimeout(function(){ $('#D10').click(); }, 3000);
    }
}
     else if ( $("#f-type").is(":checked") ){
    $('#D40').click();
    var timeOut = setTimeout(function(){ $('#D10').click(); }, 3000);
    }
     else { $('#D40').click(); }
}

else if ($("#104_carousel  > div.carousel-wrapper >  img.carousel:nth-child(2)").hasClass("active")){
if ( $("#f-type").is(":checked") ){
      clearTimeout(timeOut);
      $('#D30').click();
      timeOut = setTimeout(function(){ $('#D10').click(); }, 6000);
}
else{}
}
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:JavaScript - ukončení funkce z předešlé podmínky
« Odpověď #4 kdy: 07. 11. 2018, 11:36:17 »
Ještě bych dal pryč ty var v var timeOut, protože pak by to jakože vytváří nový kontext. V tvém kódu to asi nic neprovede, protože tam nemáš žádnou function() {}, která by ten kontext vytvořila, ale někdy v budoucnosti do toho kódu šáhneš, a nečekaně se ti to rozbije.


ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:JavaScript - ukončení funkce z předešlé podmínky
« Odpověď #5 kdy: 07. 11. 2018, 11:48:19 »
Ještě bych dal pryč ty var v var timeOut, protože pak by to jakože vytváří nový kontext. V tvém kódu to asi nic neprovede, protože tam nemáš žádnou function() {}, která by ten kontext vytvořila, ale někdy v budoucnosti do toho kódu šáhneš, a nečekaně se ti to rozbije.

yes yes...var jsem zapsal pouze nahoře(mimo podmínky)
v podmínkách už volám jen název proměnné
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.