这是我要完成的:当最后一张幻灯片到达fadeOut最后一张幻灯片,然后淡入第一张幻灯片,然后clearInterval(一切适用于此部分).现在我的问题是,如果它不存在,我想再setInterval,但我不知道如何使它发生:(我已经尝试解决这个,如果statment,但我的脚本根本不工作!如何重新启动我的间隔再次?谢谢你,如果没有这样的声明它工作正常:
if(!intervalID){
intervalID = setInterval(animate,5000);
}
这是我到目前为止
$(document).ready(function() {
/*check if intervalID don't exists messes UP!!*/
if (!intervalID) {
intervalID = setInterval(animate,5000);
}
//Hide everything except first slide and controls
$('.slidewrap div:not(.slidewrap div:first,.slidewrap .slide_controls)').hide();
var animate = function() {
/*if .pagination_active is last removeClass and addClass to .pagination_active
first li tag*/
if ($('.pagination_active').is($('.slide_controls ul li:last'))) {
$('.pagination_active').removeClass('pagination_active');
$('.slide_controls ul li:first').addClass('pagination_active');
} else {
$('.pagination_active').removeClass('pagination_active').next().addClass('pagination_active');
}
/*if div.active is last fadeOut and add .active class
to the first div and fadeIn FirsT div then CLEAR INTERVAL and set intervalID to zero */
if ($('.active').is($('.slidewrap div:last'))) {
$('.active').fadeOut(1000).removeClass('active');
$('.slidewrap div:first').addClass('active').fadeIn(1000,function() {
clearInterval(intervalID);
intervalID = 0;
});
}
//OR .active fadeOut and next div fadeIn
else {
$('.active').fadeOut(1000).next().fadeIn(1000,function() {
$('.slidewrap div.active').removeClass('active').next('div').addClass('active');
});
}
}
var intervalID;
intervalID = setInterval(animate,3000);
});
解决方法
清除一段时间后,您需要再次使用setInterval()启动它.
最好为你的setInterval()
var intervalID = null;
function intervalManager(flag,animate,time) {
if(flag)
intervalID = setInterval(animate,time);
else
clearInterval(intervalID);
}
这里flag是一个值为true / false的布尔变量. true将执行setInterval(),false将clearInterval();
现在,您可以根据需要使用上述功能.
例如:
intervalManager(true,300); // for setInterval intervalManager(false); // for clearInterval