1

このコードを実行すると、「#right」をクリックするたびに、#slide が 1 ではなく 2 ずつ増加します。たとえば、合計 6 つの要素がある場合、1 番目、3 番目、5 番目の要素を取得します。

    var present=2;
    var total_slide=document.getElementById("slider").childElementCount;
    $("#right").click(function()
    {

        for(i=1;i<=total_slide;i++) {
            $("#slide"+i).css("display","none"); // hide all elements
        }
        $('#slide'+present).css("display","block"); // the problem : display 
                                                    // only the present element
                                                    // (gets incremented by 2 )
        present=(present+1)%total_slide;
    });

ただし、たとえば、('#slide'+present) の代わりに ('#slide'+2) に 1,2,3 などを使用すると、正しい結果が得られますが、これを動的に実行したい..

ありがとう

4

1 に答える 1

2

for ループを実行する必要はありません。jQuery は配列内の要素のコレクションを既に返します。
カウンターを事前にインクリメントして「モジュール化」( %) するだけです。

http://jsbin.com/uhiyew/1/edit

var present=2;
var $childrens = $("#slider > *");
var total_slide = $childrens.length;

$childrens.eq(present).show();


$("#right").click(function(){

     $childrens.hide() // hide all elements
        .eq(++present%total_slide).show(); // show desired

});
于 2013-06-23T08:42:51.597 に答える