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:

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:

if(ID!="") {
clearTimeout(ID);
}
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.

var ID;
typeof(ID) // "undefined"
ID = setTimeout(function(){}, 1000);
ID // 111
typeof(ID) // "number"
Azt kell tehát helyesen vizsgálnod, hogy az ID kapott-e értéket.

if (typeof(ID) != "undefined") {
  clearTimeout(ID);
}
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!