ugrás a tartalomhoz

setTimeout() - clearTimeot() / A setTimeout-hoz tartozó azonosító létezik-e?

haho · 2010. Nov. 18. (Cs), 10.39
Hello!
Egy képgalériát csináltam, amelyben megoldottam, hogy a képek 5mp-enként váltsák egymást.
A setTimeout így van beállítva tehát:
  1. ID=setTimeout("slideShowNow();",5000);  
Megakartam oldani, hogy a clearTimeout() csak akkor menjen végbe, ha a setTimeout()-hoz tartozó azonosító (ID) létezik. Ezt feltételként úgy adtam meg, hogy:
  1. if(ID!="") {  
  2. clearTimeout(ID);  
  3. }  
A törlés rendesen működött is MIELŐTT feltételhez kötöttem. De azóta nem működik! Tehát amikor biztosan tudom, hogy az ID-nek van valamilyen értéke akkor sem hajtódik végre a törlés. Ellenőrzés képpen megadtam, hogy ha az ID=="" akkor is hajtódjon végre a törlés, de akkor sem működött. Csak kizárólag akkor hajtódik végre a clearTimeout ha nem teszem feltételbe.

Mi ennek az oka? Köszönöm...
 
1

Nem string vizsgálat

Török Gábor · 2010. Nov. 18. (Cs), 11.02
Az ID!="" feltétel azt vizsgálja, hogy az ID változó értéke nem üres string-e. A setTimeout() nem stringet ad vissza.
  1. var ID;  
  2. typeof(ID) // "undefined"  
  3. ID = setTimeout(function(){}, 1000);  
  4. ID // 111  
  5. typeof(ID) // "number"  
Azt kell tehát helyesen vizsgálnod, hogy az ID kapott-e értéket.
  1. if (typeof(ID) != "undefined") {  
  2.   clearTimeout(ID);  
  3. }  
Még probléma lehet, hogy az ID változód elérhető-e a clearTimeOut() hívási környezetében.
2

Sikerült

haho · 2010. Nov. 21. (V), 20.19
Köszönöm a segítségedet!