意外的标识符javascript

时间:2013-01-08 12:15:22

标签: javascript slider

我有一个问题,我想做一个滑块,我在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);
});
希望得到帮助。 ;)

3 个答案:

答案 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);
}