setInterval sorunu
Merhaba arkadaşlar, birtane select elementim var. Listeden bir elaman seçildiğinde onChange olayı gerçekleşiyor ve setInterval() bulunan fonksiyon tetikleniyor. Buraya kadar bir sorunum yok. Ancak listeden yeni bir elaman seçtiğimde setInterval() önceki veriyi gösteriyor. clearInterval() de bi işe yaramadı. Bu konuda bana yardımcı olabilirseniz sevinirim.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
Merhaba,
örnek kodunuzu inceledim. countdownInterval
değişkenini IftarSahurHesapla
fonksiyonu içinde tanımladığınız için SetInterval
fonksiyonunuzda aslında istediğiniz countdownInterval
değişkenine değer atamıyorsunuz. Aslında yeni bir countdownInterval
değişkeni oluşturuyorsunuz. Aynı şekilde StopInterval
fonksiyonunuzda da countdownInterval
değişkenine ulaşamadığınız için istediğiniz interval'i durduramamış oluyorsunuz.
countdownInterval
değişkenini, 3 fonksiyonun da kapsayıcısı olan bir blokta tanımlamalısınız. Yani aslında function IftarSahurHesapla()
satırınızın bir satır üstünde tanımlarsanız 3 fonksiyon da aynı değişkene ulaşabilecektir.
function IftarSahurHesapla(targetLocationId)
{
var countdownInterval = null;
var $test = $("#imsakiye").eq(0);
//...
yerine
var countdownInterval = null;
function IftarSahurHesapla(targetLocationId)
{
var $test = $("#imsakiye").eq(0);
//...
Bir de interval'i durdurduktan sonra yeniden başlatmalısınız. Yani
if(countdownInterval == null) {
SetInterval(BugunImsakDate, bugunAksamDate, yarinImsakDate, $countdown);
}
else{
StopInterval(countdownInterval);
}
yerine
if(countdownInterval == null) {
SetInterval(BugunImsakDate, bugunAksamDate, yarinImsakDate, $countdown);
}
else{
StopInterval(countdownInterval);
SetInterval(BugunImsakDate, bugunAksamDate, yarinImsakDate, $countdown);
}
veya SetInterval
fonksiyonu her halükârda çalıştırılacağı için şu 2 satır da aynı işi görür:
if(countdownInterval) StopInterval(countdownInterval);
SetInterval(BugunImsakDate, bugunAksamDate, yarinImsakDate, $countdown);