javascript间隔未被清除

时间:2013-06-26 19:06:00

标签: javascript jquery

我知道这个问题已经出现了很多,并且相信我已经尝试了所有解决方案。我的问题就像标题一样简单,clearInterval()函数没有按预期工作。

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

1 个答案:

答案 0 :(得分:0)

也许你多次开始?因此,您每次都会覆盖计时器,而只清除最后一个计时器。

尝试这样,如果它还没有开始,它会启动一次

if (url === 'Home'){
     newsCheck_handle || (newsCheck_handle = setInterval(function(){newsCheck(originalTitle)},1000));
     getNewsTime_handle || (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);
    newsCheck_handle = getNewsTime_handle = undefined;
}