我有以下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。这里有什么我想念的吗?
三江源
答案 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)
尝试将其声明为与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();
试试吗?