0

ぐるぐる回って停止および開始できる単純なループを作成しようとしています。

こんな風に自称してみた

var theloop = (function(){

            var theloop = (function(){

            $('#goldspot-2012 ul#goldspot-2012-list li').eq(currentItem).removeClass('current').fadeOut(500);
            $('#goldspot-2012 ul#goldspot-2012-list li').eq(currentItem+1).addClass('current').fadeIn(500);
            $('#gs-controls ul li').eq(currentItem).removeClass('current');             
            $('#gs-controls ul li').eq(currentItem+1).addClass('current');          

            if (currentItem == items -1){
                currentItem = 0;
                theloop();
            }

            else {
                currentItem++;  
                theloop();
            }



        });

無限ループに陥っていると想像すると、エラーになります

私も試してみました

var theloop = setInterval(function(){

            $('#goldspot-2012 ul#goldspot-2012-list li').eq(currentItem).removeClass('current').fadeOut(500);
            $('#gs-controls ul li').eq(currentItem).removeClass('current');                         

            if (currentItem == items -1){
                currentItem = 0;
            }

            else {
                currentItem++;  
            }
            $('#goldspot-2012 ul#goldspot-2012-list li').eq(currentItem).addClass('current').fadeIn(500);
            $('#gs-controls ul li').eq(currentItem).addClass('current');

        }, 5000);

しかし、これは簡単に止めたり始めたりすることはできません。

停止するまで継続する基本的なループを誰かに教えてもらえますか、または上記の 2 つのうちの 1 つは、少しいじって実行できますか?

ありがとう

4

1 に答える 1

0

これを試して:

        var cycler = true;
        var theloop = (function(){

        $('#goldspot-2012 ul#goldspot-2012-list li').eq(currentItem).removeClass('current').fadeOut(500);
        $('#goldspot-2012 ul#goldspot-2012-list li').eq(currentItem+1).addClass('current').fadeIn(500);
        $('#gs-controls ul li').eq(currentItem).removeClass('current');             
        $('#gs-controls ul li').eq(currentItem+1).addClass('current');          

        if (currentItem == items -1){
            currentItem = 0;
        }

        else {
            currentItem++; 
        }

        if(cycler) theloop();

        });

これにより、無限ループを停止する機会が得られます。ループを停止する必要がある場合は、 cycler をfalseに設定するボタンまたはコードを配置します。

于 2012-07-11T11:02:34.197 に答える