一旦到达终点,如何再次运行一个函数?

时间:2015-05-31 20:28:44

标签: javascript

一旦到达数组中的最后一个值,如何再次遍历循环?

我希望在完成后再次运行函数init(),因为更多的DOM元素myElement在被点击后会被激活。

我已经尝试在init之后运行setTimeout函数,但这不起作用并尝试检查数组上的最后一个元素btn.length -1仍无法正常工作。

function doSetTimeout(index, btn) {

    setTimeout(function() { 
        jQuery(btn[index]).click(); 
    }, index  * 1500);

    //init();   

}

function init() {

    var btn = [].slice.call(document.querySelectorAll('.myElement'));

    var index;

    for (index = 0; index < btn.length; index++) {

        doSetTimeout(index, btn)

    }

}

init();

2 个答案:

答案 0 :(得分:1)

这有用吗?

function init() {

    var btn = [].slice.call(document.querySelectorAll('.myElement'));

    var index = 0;

    function click() {
      setTimeout(function() {
          if(index < btn.length) {
            jQuery(btn[index++]).click();
            click();
          } else {
            init();
          }
      }, 1500);
    }
    click();
}

答案 1 :(得分:0)

如果你想写一个&#34; dumb&#34;检查基于计时器,然后使用以下习语:

doWhateverYouHaveToDo();

function doWhateverYouHaveToDo() {
  // ...
  setTimeout(doWhateverYouHaveToDo, 1500);
}

这将大约每1.5秒运行一次doWhateverYouHaveToDo,等待每次调用完成后再继续。