我有一个问题,我想做一个滑块,我在window.clearTimeout(timer)
和nextSlide()
函数的prevSlide()
行都有一个意外的标识符。你能救我吗?
var timer = new Object;
function slider(){
nextSlide();
window.setTimeout(slider, 5000);
}
function nextSlide(){
var $Slides = $(".contenu");
$Slides.animate(
{left: "-=213px"},
1000,
function(){
$Slides.data("currentSlide",$Slides.data("currentSlide")+1);
if($Slides.data("currentSlide") > $Slides.data("nbSlides")) {
$Slides.data("currentSlide",1).css({left:"-213px"});
}
}
window.clearTimeout(timer);
timer = window.setTimeout(slider, 5000);
);
}
function prevSlide(){
var $Slides = $(".contenu");
$Slides.animate(
{left:"+=213px"},
1000,
function(){
$Slides.data("currentSlide", $Slides.data("currentSlide")-1);
if($Slides.data("currentSlide") == 0) {
$Slides.data("currentSlide",$Slides.data("nbSlides")).css({left:-(213*$Slides.data("currentSlide"))});
}
}
window.clearTimeout(timer);
timer = window.setTimeout(slider, 5000);
);
}
这里载入:
$(function(){
slider();
$('#slider').addClass('slider');
var $Slides = $('.contenu');
var _step = $Slides.find(".slide:first").width();
$Slides.data("currentSlide",1).data("nbSlides",$Slides.find('.slide').size());
$Slides.find(".slide:last").clone().prependTo(".contenu");
$Slides.find(".slide:first").next().clone().appendTo('.contenu');
$Slides.find(".slide:first").addClass("clone").end().css({left:-_step});
$Slides.width($Slides.find(".slide").size()*_step);
$('.next').bind("click", nextSlide);
$('.prev').bind("click", prevSlide);
});
希望得到帮助。 ;)
答案 0 :(得分:2)
您仍在.animate()
来电,应将);
移至window.clearTimeout(timer)
以上。
这个答案假设您想在开始动画后直接设置timeOut,如果您想在动画的回调中设置timeOut,您应该执行David的答案并将其移到上面{ {1}}。强>
编辑:
根据您的评论,我为您完成了这项功能:
}
答案 1 :(得分:1)
函数调用参数应该用逗号,
分隔,但在您的情况下,用分号;
分隔它们 - 行以分号而不是逗号结尾。也是下一行。这不是具有多个语句的函数体,而是函数调用(到animate
),因此您需要使用逗号。
另一方面 - 这些可能不是参数,因此您需要将结束);
部分移到这些行之上,以便它们成为单独的语句而不是函数参数。
答案 2 :(得分:0)
此代码段:
window.clearTimeout(timer);
timer = window.setTimeout(slider, 5000);
放在上下文之外。您需要将它放在函数内或全局范围内以使其工作,f.ex:
function(){
$Slides.data("currentSlide", $Slides.data("currentSlide")-1);
if($Slides.data("currentSlide") == 0) {
$Slides.data("currentSlide",$Slides.data("nbSlides")).css({left:-(213*$Slides.data("currentSlide"))});
}
window.clearTimeout(timer);
timer = window.setTimeout(slider, 5000);
}