首页 > 解决方案 > 以给定的时间间隔单击页面上的所有按钮

问题描述

我有一个显示按钮列表的页面,一次至少有一百个,我想要一些 jQuery 代码,例如以 5 3 秒的间隔一个一个地单击所有这些按钮,下面是我写的查询,但是它只点击 3 到 4 个按钮然后切断

$(document).ready(function(e) {
    $(".generate_all").click(function(e){
        var generateButtons = $('.generate');
        var numberOfButtons = generateButtons.length;

        for(var i=0; i<numberOfButtons; i++){
            generateButtons[i].click();
        }       
    })
});

标签: jquery

解决方案


为了完成这项工作,您可以循环访问按钮,并为每个按钮附加超时,从而触发其自己的click事件处理程序。您可以通过将延迟乘以元素的索引来抵消这些超时,如下所示:

$('button').click(function() {
  console.log($(this).index());
}).each(function(i) {
  (function(el, index) {
    setTimeout(function() {
      $(el).click();
    }, 3000 * (index + 1));
  })(this, i);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <button>0</button>
  <button>1</button>
  <button>2</button>
  <button>3</button>
  <button>4</button>
</div>

注意处理程序中的 IIFE 表达式each()button这是在延迟最终执行时保持要单击的范围所必需的。

另请注意,这使用 3 秒间隔(3000值),但如果需要,可以轻松更改为 5 秒,因为您的问题在这方面不清楚。


推荐阅读