JQuery SetInterval不工作

时间:2014-08-30 03:43:18

标签: jquery

我有以下JQuery代码。我试图让点击重置setInterval,以便计时器再次启动。例如:重置为5秒。因此,如果它计数4秒,我点击它应重置为新的完整5秒。

var varTimerSpeed = 5000;
bannerDisplayMembersMatchingCriteriaUpdateTimerInterval();
function bannerDisplayMembersMatchingCriteriaUpdateTimerInterval() {
    var varTimerInterval = setInterval(function () {
        bannerDisplayMembersMatchingCriteriaUpdate();
    }, varTimerSpeed);
}


$('#mainBannerOurTopSuggestionsIMG').click(function() {
    clearInterval(varTimerInterval);
    bannerDisplayMembersMatchingCriteriaUpdateTimerInterval();
});

我可以看到click事件正在工作(通过写入控制台)但是它似乎没有重置setInterval。这里有什么我想念的吗?

三江源

3 个答案:

答案 0 :(得分:1)

由于变量varTimerInterval的范围,您已将其声明为bannerDisplayMembersMatchingCriteriaUpdateTimerInterval方法中的局部变量,因此它在click处理程序中不可用

由于您需要在两种不同的方法中访问相同的变量varTimerInterval,因此需要在两个函数共享的范围内声明它,以便两者都能访问同一个实例。

var varTimerSpeed = 5000,
    varTimerInterval;
bannerDisplayMembersMatchingCriteriaUpdateTimerInterval();

function bannerDisplayMembersMatchingCriteriaUpdateTimerInterval() {
    varTimerInterval = setInterval(function () {
        bannerDisplayMembersMatchingCriteriaUpdate();
    }, varTimerSpeed);
}


$('#mainBannerOurTopSuggestionsIMG').click(function () {
    clearInterval(varTimerInterval);
    bannerDisplayMembersMatchingCriteriaUpdateTimerInterval();
});

答案 1 :(得分:1)

var varTimerInterval本地作用于bannerDisplayMembersMatchingCriteriaUpdateTimerInterval函数。

尝试将其声明为与varTimerSpeed相同;

答案 2 :(得分:1)

var varTimerSpeed = 5000;
var varTimerInterval;

function bannerDisplayMembersMatchingCriteriaUpdateTimerInterval() {
    varTimerInterval = setInterval(function () {
        bannerDisplayMembersMatchingCriteriaUpdate();
    }, varTimerSpeed);
}


$('#mainBannerOurTopSuggestionsIMG').click(function() {
    if( typeof(varTimerInterval) != 'undefined')
        clearInterval(varTimerInterval);
    bannerDisplayMembersMatchingCriteriaUpdateTimerInterval();
});
bannerDisplayMembersMatchingCriteriaUpdateTimerInterval();

试试吗?