写在循环里的计时操作

本来看着题目是做打字机效果的,然而我脑子一抽,做成了文字更换出现,虽然偏题了,既然出问题了,还是得改回来的,然后我就跌进了一个坑。我一开始的代码是这样的:

var text = new Array();
text[0]="哈哈5";
text[1]="哈哈4";
text[2]="哈哈3";
text[3]="哈哈2";
text[4]="哈哈1";
function show()
{
for(var num=0;num<5;num++)
{setInterval(document.getElementById("qu").innerHTML = text[num],3000);}
}

分分钟搞定,很对有木有,然而计时器再快也跑不过for,这俩货互不干扰的好蛮,for循环一轮,计数器一边计时去。。。

然后,根据网上找到的,我又把代码改成了这样:

var text = new Array();  
text[0]="哈哈5";  
text[1]="哈哈4";  
text[2]="哈哈3";  
text[3]="哈哈2";  
text[4]="哈哈1";  
var num=4;
function show(){show2(num);num--;setInterval(function(){show()},3000); }
function show2(num){document.getElementById("qu").innerHTML = text[num];}



然后更奇怪的出现了,为毛只出现哈哈124?我的哈哈35咧?最后那个undefined是誰派你来的?!好了问题到这里卡住了,再找办法吧,嘤嘤嘤。。。

好吧,大神来拯救我了,感谢大神!首先把,我循环没给结束啊,就在遛文字了,所以最后才会出现undefined:

也就是做num--做了很久,又没给个了结。

然后计时器操作部分不显示也还是老问题,循环和计时器没搭噶的。so最后的代码:

    var text = new Array();
    text[0] = "哈哈5";
    text[1] = "哈哈4";
    text[2] = "哈哈3";
    text[3] = "哈哈2";
    text[4] = "哈哈1";
    var num = 4;
    function show() {
        show2(num);
        num--;
        if(num<0)clearInterval(timer)//已经小于数组下标,停止计时器
        ///setInterval(function () { show() }, 3000);
    }
	
    var timer=setInterval(function () { show() }, 3000);//
    function show2(num) { document.getElementById("qu").innerHTML = text[num]; }



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值