为了账号安全,请及时绑定邮箱和手机立即绑定

for循环和setInterval()

标签:
JavaScript

最近脑子比较迟钝,遇见一个问题,记录下来,如下:
有个数组arr:<code>["1","2","3","4","5"]</code>,然后有个id为<code>box</code>的元素,实现单击屏幕后,按照数组各项顺序,每1秒钟向box中添加数组的一项,jq如何实现。
一开始的写法:

window.onload = function(){
    var arr = ["1","2","3","4","5"],
        arrL = arr.length,
        oBox = $("#box");
    $(document).on("click",function(){
        for(var i = 0; i < arrL; i ++){
            setInterval(function(){
                oBox.append(arrL[i])
            },1000)
        }
    })  
}

写完发现什么都没什么用,才发现跟我所想有很大差异,这样写并不是给for循环设定了每次循环的时间间隔,所以执行添加操作的时候,for循环变量已经最大了。
最后解决办法,不用for循环,代码很简单,如下:

window.onload = function(){
    var arr = ["1","2","3","4","5"],
        arrL = arr.length,
        oBox = $("#box");
    $(document).on("click",function(){
        var i = 0;
        var t = setInterval(function(){
            oBox.append(arr[i]);
            i += 1;
            if(i > arrL - 1){
                clearInterval(t);
            }
        },1000)
    })
}

问题所在:思维限制,很多时候一想到要循环马上就是for,但是有可能根本就用不到。办法总比问题多,所以遇见问题后不应立马就着手做,首先应该想想哪种办法最合适,最简单,最有效。
有关for循环还有一个比较经典的问题,单击<code>ul</code>中每项<code>li</code>,弹出相应<code>li</code>的索引值,留作以后手记。

点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消