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

ZAJDAN

  • *****
  • 2 110
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.

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 110
Re:JavaScript - ukončení funkce z předešlé podmínky
« Odpověď #2 kdy: 07. 11. 2018, 10:46:25 »
Citace od: Filip Jirsák 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).
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 110
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
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

  • *****
  • 2 155
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 110
Re:JavaScript - ukončení funkce z předešlé podmínky
« Odpověď #5 kdy: 07. 11. 2018, 11:48:19 »
Citace od: BoneFlute 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.

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.