2014-08-30 97 views
0

我有以下JQuery代碼。我試圖讓點擊來重置setInterval,所以定時器再次啓動。例如:重置爲5秒。所以如果它計數4秒,我點擊它應該重置爲新的整整5秒。JQuery SetInterval否工作

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


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

我可以看到點擊事件正在工作(通過寫入控制檯),但它不會出現重置setInterval。有什麼我在這裏失蹤?

三江源

回答

1
var varTimerSpeed = 5000; 
var varTimerInterval; 

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


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

試試吧?

1

這是因爲變量varTimerInterval的範圍,你已經宣佈它在bannerDisplayMembersMatchingCriteriaUpdateTimerInterval方法的局部變量,所以在click處理程序也將無法使用。

由於您需要通過兩種不同的方法訪問同一變量varTimerInterval,因此您需要在兩個函數共享的作用域中聲明它,以便兩者都將訪問同一個實例。

var varTimerSpeed = 5000, 
    varTimerInterval; 
bannerDisplayMembersMatchingCriteriaUpdateTimerInterval(); 

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


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

var varTimerInterval在本地作用域爲bannerDisplayMembersMatchingCriteriaUpdateTimerInterval函數。

嘗試在varTimerSpeed中聲明它,