0
var switchTabs = function(index, el) {
            //alert("Call SwitchTabs");

            ribbon.slideTo(index);
            ribbon.currentSlideIndex = parseInt(index, 10);

            //console.log(ribbon.currentSlideIndex);

            dojo.query('.ibm-slider-wrapper #ibm-thumb-slider-tabs li.ibm-active').removeClass('ibm-active');
            dojo.query(el).addClass('ibm-active');      //applies class to current active li
            //fixTabHeight(index == 4);
        }       

自動スクロールのこの下のセクションは実行され、一度に1つのインデックスを停止しません。まっすぐ6にジャンプするので、スライダーが0から6番目の位置に移動します。8秒後に1つずつ動かしてほしい。

各インデックスを停止してswapTabs(a、b);を実行するにはどうすればよいですか。次に、autoScroll内のインデックス変数の増分をトリガーしますか?

setInterval()を使用してみましたが、それでも希望どおりに機能します。理想的には、各インデックスにSwitchステートメントを使用し、setInterval内でswapTabsをトリガーして、個々のインデックスキーのタイマーを管理できるようにします。どんな助けでも大歓迎です。

var autoScroll = function(){            
            //alert("Inside AutoScroll");
            //var tabCount = $('.ibm-slider-wrapper #ibm-thumb-slider-tabs li');
                for(var i = 0; i < 6; i++) {
                    var tabsIndex = $('.ibm-slider-wrapper #ibm-thumb-slider-tabs li a');
                        switchTabs(parseInt(tabsIndex[i].getAttribute('rel'), 10), tabsIndex[i].parentNode);
                        console.log(tabsIndex[i]);
                    }
        }   

        autoScroll();
4

2 に答える 2

0

関数自体を使用setTimeoutして呼び出します。

var i = 0, interval = 8000, iterations = 6;

var autoScroll = function(){

    // function body here

    i++;
    console.log("Iteration #" + i);
    if (i < iterations) {
        setTimeout(autoScroll, interval);
    }  
}   

// start first run
autoScroll();
于 2012-09-20T02:51:04.167 に答える
0

あなたのコードは、インデックス 0 から 5 まで (互いにミリ秒以内で) すばやく連続して移動し、スクリプトがインデックス 6 で終了するまで、ブラウザーはおそらく何も表示しません。

停止して各タブを表示する場合は、次のようなものを使用してsetTimeout()、タイマーが起動するたびに 1 つのタブを進める必要があります。

 (function() {
     var indexCntr = 0;
     var tabsIndex = $('.ibm-slider-wrapper #ibm-thumb-slider-tabs li a');
     function autoScroll() {
         if (indexCntr < 6) {
             switchTabs(parseInt(tabsIndex[index].getAttribute('rel'), 10), tabsIndex[i].parentNode);
             ++indexCntr;
             setTimeout(autoScroll, 5000);   // set the proper delay time here
         }
      }   

      autoScroll();
 })();
于 2012-09-20T02:51:09.730 に答える