使用这个小功能,我可以轻松移动滑块,我可以插入setTimeOut发送新循环等的时间
但是我有一个问题,你可以看到var时间,这个var表示运行其他时间setTimeOut的时间,如果你在动画中看到我有其他时间运行和显示在每个滑块,问题是iti动画完成时需要运行setTimeOut的时间,并创建动画之间的时间间隔,这个时候运行第一个滑块显示第二个等等,我不能显示每个滑块一对一
例如,运行第一个滑块,8秒后显示下一个滑块等
var time = 8000;
$(".im_" + id).slideDown().animate({
height: "300px",
width: "100%",
}, 1200).delay(4000).fadeOut(1000);
id = (id + 1) % imax;
setTimeout(function() {
slider(id);
}, time);
我希望了解所有,谢谢,最诚挚的问候
答案 0 :(得分:1)
您可以随时将其他时间设置为var delayTime = 4000
等变量,然后将它们全部加在一起以获得您想要等待的实时时间:
timeOutDuration = additionalTime + delayTime + animationTime + fadeOutTime
additionalTime
是你的8秒,并使用timeOutDuration
而不是time
作为setTimeout
的持续时间
听到它的回音将是你最好的选择,但我并不完全明白你正在尝试做什么。
答案 1 :(得分:0)
jquery slidingown函数和animate函数都有回调函数。 不会重写
id = (id + 1) % imax;
setTimeout(function() {
slider(id);
}, time);
as
function slide() {
id = (id + 1) % imax;
slider(id);
}
然后只是将该函数称为动画的回调?
答案 2 :(得分:0)
正如我在评论中提到的,您可以通过等待上一个动画中的完整事件来运行下一个滑块。对于您的示例,第二个幻灯片(id)将在第一个动画完成后8秒运行。
var time = 8000;
function nextAnimation() {
setTimeout(function() {
id = (id + 1) % imax;
slider(id);
}, time);
}
$(".im_" + id).slideDown().animate({
height: "300px",
width: "100%",
}, 1200).delay(4000).fadeOut(1000, nextAnimation);
答案 3 :(得分:0)
您可以在div上<{3}}查看(更新)promise().done
var time = 8000;
var imax = 4
function slide(id, firstPass) {
firstPass &= id !== imax;
id = id % imax;
var nextId = (id + 1);
$(".im_" + id).slideDown().animate({
height: "300px",
width: "100%",
}, 1200).delay(4000).fadeOut(1000);
if (firstPass)
$(".im_" + id).promise().done(function () {
setTimeout(function () {
slide(nextId, firstPass);
}, time)
});
}
slide(0, true);