0

ここで問題があります。スライダーを実行したいのですが、関数と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);
});

助けてthx。;)

4

3 に答える 3

2

まだ通話中です。上に.animate()移動する必要があります。);window.clearTimeout(timer)

この回答は、アニメーションを開始した直後にtimeOutを設定することを前提としています。アニメーションのコールバックでtimeOutを設定する場合は、Davidの回答にあることを実行し、それを上に移動する必要があります}

編集:
あなたのコメントに基づいて、私はあなたのためにこの関数を作りました:

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);
        }
    );
}
于 2013-01-08T12:22:45.190 に答える
1

関数呼び出しパラメーターはコンマで区切る必要がありますが,、この場合は;セミコロンで区切ります。行はコンマではなくセミコロンで終わります。次の行も。これは複数のステートメントを持つ関数本体ではなく、関数呼び出し(to animate)であるため、コンマを使用する必要があります。

一方、これらはおそらく引数ではないため、);代わりにこれらの行の上に終了部分を移動して、関数パラメーターではなく別個のステートメントになるようにする必要があります。

于 2013-01-08T12:23:19.900 に答える
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);
}
于 2013-01-08T12:22:17.787 に答える