我知道這個問題已經彈出了很多,並相信我已經嘗試了所有的解決方案。我的問題與標題一樣簡單,clearInterval()
函數未按預期工作。javascript間隔不被清除
var newsCheck_handle;
var getNewsTime_handle;
var originalTitle = document.title; //for title attribute update in newsCHeck function
if (url === 'Home'){
newsCheck_handle = setInterval(function(){newsCheck(originalTitle)},1000);
getNewsTime_handle = setInterval(function(){getNewsTime()},120000);
$("#refreshFeed").on('click', loadNew); //load new news on click
}
else {//stop functions if not on homepage
clearInterval(newsCheck_handle);
clearInterval(getNewsTime_handle);
}
我試圖在同一水平作爲間隔設置var
的,而不是過,但不起作用。還試過window.clearInterval()
,self.setInterval()
。
以防萬一需要。這是newsCheck
函數。兩個人都會發生同樣的效果,他們的功能相當類似。
function newsCheck(originalTitle){
var objts = $(".newsItem:first").data("ts");
var objid = $(".newsItem:first").data("id");
var objevent = $(".newsItem:first").data("event");
var ids = $.makeArray(objid); //variable of IDS
var ts = $.makeArray(objts); //variable of ts
var event = $.makeArray(objevent); //variable of ts
if (objts != null && objid != null){
$.get("../AJAX/get_feed_updates.php",{ ID: ids, ts: ts, event: event },function(result){
if (result > 0) {
document.title = '(' + result + ') ' + originalTitle;
if (result == 1){// no plurals
$("#refreshFeed").html(result + ' more news item.').fadeIn("slow");
}
if (result > 1){ //plurals
$("#refreshFeed").fadeIn(500).html(result + ' more news items.');
}
}//close if result
});//close get
}// close if ts
}//close function
開始的第一個片段是如何執行的?我有一個預感,間隔或者甚至沒有開始,或者你的條件是*永遠*爲真。 –
@KevinB我已經使用'console.log()'來檢查。情況並非總是如此。如果我在else子句中記錄某些東西,它會記錄下如果條件不成立。間隔正在開始,因爲我已經記錄了函數內的某些內容。 –
你能回答凱文的問題嗎?這是如何調用的/這個代碼位於何處。這可以連續多次調用「url === HOME」,然後纔會出現錯誤並只清除最後一個?這些變量在**函數中定義了**,這意味着它們在每次調用時都被清除了嗎? –