【问题标题】:add a short delay between each iteration of do while loop在 do while 循环的每次迭代之间添加一个短暂的延迟
【发布时间】:2013-10-11 09:23:33
【问题描述】:

我已经编写了一个代码来触发我页面上四个标签上的点击事件,并且循环工作正常,因为我使用写在循环体中的警报框对其进行了测试。但默认情况下,在 jquery 中,所有迭代都发生得如此之快,以至于无法看到这些点击事件的发生。

所以我想在 do while 循环中添加一个短暂的延迟。我写的循环是:

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)

我也希望这个循环不断重复。

【问题讨论】:

    标签: javascript jquery iteration delay


    【解决方案1】:

    最简单的解决方案是使用setTimeout。使用立即调用的命名函数,代码可以像 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);
    })();
    

    【讨论】:

    • 谢谢dystroy..抱歉我不在,所以我不能接受你的回答
    【解决方案2】:

    你也可以使用.delay()函数

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

    例如:

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

    一旦点击按钮,这里的 div 首先会在 800 毫秒的间隔后被加载。

    【讨论】:

    • delay 可以使用,但没那么简单。如果你认为你知道怎么做,请添加一些代码而不仅仅是一个链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多