【发布时间】:2015-12-06 17:50:46
【问题描述】:
我用 php 和 javascript 制作了一个幻灯片,它可以很好地滑动图像,但我有点卡在后退和前进功能上,如果你能在这里帮助我,我将不胜感激。这就是我到目前为止已经完成了:
PHP:
$dir = 'images/slideshow';
$images = scandir($dir);
$i = 0;
echo '<div id="slideshow-wrapper">';
echo '<div id="slideshow-beta">';
foreach($images as $img){
if ($img != '.' && $img != '..') {
$i++;
echo '<img src="../images/slideshow/'.$img.'" class="img_'.$i.'">';
}
}
echo '</div>';
echo '<div id="slideshow-controller">';
echo '<div class="left-arrow-div"><span class="left-arrow" onclick="SlideShow(-1);"></span></div>';
echo '<div class="right-arrow-div"><span class="right-arrow" onclick="SlideShow(1);"></span></div>';
echo '</div>';
echo '</div>';
Javascript:
var i=1;
var begin=true;
function SlideShow(x){
if(x==-1){
i--;
}else if(x==1){
i++;
}
var total=$('#slideshow-beta img').length;
for(var j=1;j<=total;j++){
if($('.img_'+j).css('display')!='none'){
begin=false;
break;
}else{
begin=true;
}
}
if(i>total){
i=1;
$('.img_'+total).fadeOut(1000,function(){
$('.img_'+i).fadeIn(1000);
});
}else if(begin){
$('.img_'+i).show();
}else if(!begin){
$('.img_'+(i-1)).fadeOut(1000,function(){
$('.img_'+i).fadeIn(1000);
});
}
setTimeout(function(){
i++;
SlideShow(x);
},5000);
}
HTML:
<body onload="SlideShow(false);">
如您所见,我尝试创建一个 onclick 事件来更改运行时的“i”值,尽管值已更改,但图像没有。可能是因为按下后退/前进调用函数的另一个实例而不是覆盖它。我不确定,我迷路了。
这是fiddle
【问题讨论】:
-
如果你在 jsfiddle 中分享你的代码而不使用 php,问题会很快解决
-
提示:将代码
if(begin==true)替换为if(begin) -
另外,
if(i==total+1){到if(i>total){ -
StackOverflow 也支持 fiddles
-
'我会回来的' ...用小提琴
标签: javascript php jquery html slideshow