2016-03-15 72 views
0

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

我遇到了计时问题。我写循环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 ... 

回答

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,但也许你可以最好地理解这一点。

+0

我尝试过使用setTimeout,结果是一样的。你确定延迟* 8000有意义吗? – FunnyGirl

+0

不确定这是否正确。它确实显示了特定时间的单个图像,但是在第一个图像出现之前控制台日志正在写入所有jslideNumber。这意味着,例如在一个视频幻灯片的情况下,它会在它显示之前开始播放。我正在尝试做的是上面编辑 – FunnyGirl