Jquery手动幻灯片放映

时间:2016-03-15 22:57:08

标签: jquery slideshow delay

我正在手动编写幻灯片脚本,而不是使用其他现成的软件包。原因是在我的幻灯片放映中,一些幻灯片可能是图像,一些可能是视频,一些可能是交互式的。所以我自己就是在解决这个问题。

我遇到时间问题。我正在编写循环scritps来查询数据库以获取所有幻灯片,然后循环并显示每个幻灯片:

while(jslideNumber <= numberOfSlides){
 $('.slide'+jslideNumber).delay(jslideNumber*8000).fadeIn(1000).delay(5000).fadeOut(1000).delay(2000);
 jslideNumber++;
 console.log("jslideNumber: "+jslideNumber)
}

问题是在这个例子中有5张幻灯片。上面的脚本同时显示全部5个,延迟5秒,然后同时隐藏它们。我究竟做错了什么?像任何其他幻灯片一样,这应该一次显示一张幻灯片,等待,隐藏,然后显示下一张幻灯片。

好的:编辑感谢下面的一位绅士,我确实有一个脚本可以显示特定时间的单个图像,但是控制台日志会在第一张幻灯片显示之前列出所有6个jslideNumbers。这意味着所有6个都已加载,脚本甚至尚未启动。有了这个,如果有300张幻灯片怎么办?

我更喜欢的是

Show Slide 1
wait 30 10sec
log slide 1

show Slide 2
wait 30sec
log slide 2

...

相反,上面的脚本真正做的是:

Log Slide1
Log Slide2
Log Slide3 ...

Show Slide 1
Hide SLide 1
Show Slide 2
Hide Slide 2 ...

1 个答案:

答案 0 :(得分:0)

嗯,有很多方法可以做到,但是现在,你告诉所有幻灯片做同样的事情。与我所能想到的最接近的东西可能是:

while(jslideNumber <= numberOfSlides){
   $('.slide'+jslideNumber).delay(jslideNumber*8000).fadeIn(1000).delay(5000).fadeOut(1000).delay(2000);
   jslideNumber++;
   console.log("jslideNumber: "+jslideNumber)
}

假设jslideNumber以0开头(正如任何优秀的程序员所做的那样)。

有很好的方法,所以使用setTimeout或setInterval,但也许你可以理解这一点。