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