我遇到了一些问题,我试图将其用作Google Chrome中的基本图片滑块。
我的HTML如下 -
<!DOCTYPE html>
<html>
<head>
<title>Gallery</title>
<link rel="stylesheet" href="css/gallery.css">
</head>
<body>
<div class="wrapper">
<div id="slider">
<Img id="1" src="images/slide1.jpg">
<Img id="2" src="images/slide 2.jpg">
<Img id="3" src="images/slide 3.jpg">
</div>
<a href="#" class="left" onclick="prev(); return false;">Previous</a>
<a href="#" class="right" onclick="next(); return false;">Next</a>
</div>
<script src="js/jquery.js"></script>
<script src="js/gallery.js"></script>
</body>
</html>
这是我的Javascript -
sliderInt=1;
sliderNext=2;
$(document).ready(function(){
$("#slider>img#1").fadeIn(300);
startSlider();
});
function startSlider(){
count=$("#slider>Img").size();
loop=setInterval(function(){
if(sliderNext>count){
sliderNext=1;
sliderInt=1;
}
$("#slider>Img").fadeOut(300);
$("#slider>Img#" + sliderNext).fadeIn(300);
sliderInt=sliderNext;
sliderNext=sliderNext + 1;
},3000);
}
function prev(){
newSlide=sliderInt-1;
showSlide(newSlide);
}
function next(){
newSlide=sliderInt + 1;
showSlide(newSlide);
}
function showSlide(){
if(id>count){
id=1;
}else if(id<1){
id=count;
}
$("#slider>Img").fadeOut(300);
$("#slider>Img#" + id).fadeIn(300);
sliderInt=id;
sliderNext=id + 1;
}
然而,当我点击下一个/上一个文本时,没有任何反应。
有什么建议吗?
PS。这是我的第一次html和java尝试。
非常感谢
答案 0 :(得分:1)
打开谷歌Chrome控制台(ctrl + shift + I),你会看到javascript错误。
使用onclick属性是个坏主意。 您可以使用jQuery事件。 类似的东西:$(“。left”)。on(“click”,prev);
$( “#滑块&GT; IMG”)淡出(300)。 $(“#slider&gt; Img#”+ sliderNext).fadeIn(300);
这是错误的,因为第二行将在第一行完成之前开始 使用此代码:
$("#slider>Img").fadeOut(300);
setTimeout(function() {
$("#slider>Img#" + sliderNext).fadeIn(300);
}, 300);
或
$.when( $("#slider>Img").fadeOut(300); )
.done( $("#slider>Img#" + sliderNext).fadeIn(300); );
答案 1 :(得分:0)
我会在按钮的html中删除onclick的属性, 而在jquery中添加一个列表器,因为我觉得将所有jquery / javascript保存在一个地方更容易。
请点击此处:http://jsfiddle.net/h25z9/
$(".right").click(function(){
prev();
});
$(".left").click(function(){
next();
})
这对jsfiddle不起作用,因为我没有所有资源,但你应该看到我对代码所做的更改。
答案 2 :(得分:0)
setInterval没有获取计数变量。 startSlider在setInterval中运行并结束。计数不会保存在更多的全局位置,例如在函数外部。它随着功能的结束而被摧毁。所以代替上面的代码,你应该:
var count = 0;
function startSlider(){
}
OR
setInterval(function(count){
if(sliderNext>count){
sliderNext=1;
sliderInt=1;
}
$("#slider>Img").fadeOut(300);
$("#slider>Img#" + sliderNext).fadeIn(300);
sliderInt=sliderNext;
sliderNext=sliderNext + 1;
},3000, count);
如果它仍然不起作用,则表示您的逻辑可能有问题。