简体   繁体   English

在do while循环的每次迭代之间添加一个短延迟

[英]add a short delay between each iteration of do while loop

I have written a code to trigger click event on the four labels on my page and the loop is working fine as i tested it using alert box written in loop body. 我已经编写了一个代码来触发我页面上四个标签上的点击事件,并且循环工作正常,因为我使用循环体中编写的警告框进行了测试。 but by default, in jquery all iterations happen so quick that it is impossible to see those click events happening. 但默认情况下,在jquery中,所有迭代都发生得如此之快,以至于无法看到发生的点击事件。

so I want to add a short delay in the do while loop. 所以我想在do while循环中添加一个短暂的延迟。 Loop that i have written is: 我写的循环是:

var elets = $('label');
var n = elets.length;
var i=0;
do
{
    //setTimeout ( function() {
    var forname = elets[i].getAttribute("for");
    var selected_label = $('label[for='+forname+']');
    selected_label.trigger("click");
    i++;
    //}, 3000);
} while(i<n)

I also want this loop to be repeated continuously. 我也希望这个循环能够不断重复。

The simplest solution is to use setTimeout . 最简单的解决方案是使用setTimeout With an immediately invoked named function, the code can be about as simple and clear as with a do or for loop : 使用立即调用的命名函数,代码可以像dofor循环一样简单明了:

var elets = $('label');
var n = elets.length;
var i=0;
(function doOne(){
    var forname = elets[i].getAttribute("for");
    var selected_label = $('label[for='+forname+']');
    selected_label.trigger("click");
    if (i++<n) setTimeout(doOne);
})();

you can also use .delay() function 你也可以使用.delay()函数

refer http://api.jquery.com/delay/ 参考http://api.jquery.com/delay/

for example : 例如 :

<script>
   $( "button" ).click(function() {  
      $( "div.first").delay( 800);
   });

Here div first will be loade after interval of 800 milliseconds once click on button. 这里div首先会在点击按钮后800毫秒的间隔后进行加载。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM