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()如果您希望它停止并显示每个选项卡,那么您需要在每次计时器触发时使用类似的东西并推进一个选项卡。

 (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 回答