JSFiddle: http://jsfiddle.net/6A7xh/1/
此脚本的目的是输出
装载
[1秒延迟] - >
中..
[1秒延迟] - >
加载...
[1秒延迟] - >
绘画蒙娜丽莎。
[1秒延迟] - >
绘画蒙娜丽莎......
[等等]
所以这里的东西:
loadList = [
"Loading the good stuff",
"Painting Mona Lisa",
"Just a second longer",
"Or not",
"Oh! We forgot to plug it in",
"That's better",
"Well",
"Maybe not",
"Wondering why",
"your internet is so slow",
"Still",
"Loading",
];
var i = 0;
var x = 0;
function loadTrans(x){
//if (!$(window).ready){
$(".intro > p").text(loadList[x]);
playTrans();
//}
}
function playTrans(){
currentText = $(".intro > p").text();
setTimeout(function(){
$(".intro > p").text( currentText + ".");
if(i == 3){
x++;
loadTrans(x);
}
i++;
if(i < 4){
playTrans();
i = 0;
}
},1000);
}
loadTrans();
我认为我尝试做的事情很清楚,但到目前为止,我的方法似乎失败了。现在,脚本在一个永无止境的循环中添加句点,并且每三个循环都不会发生转换。
我在这里做错了什么?有谁知道我可以更整洁地做到这一点?
注意:我最初使用for循环执行此操作,但在这种情况下setTimeout显然失败了。
答案 0 :(得分:2)
You can do this。你可以将它放在一个函数中,并将计时器放在一个变量中。当您的资源全部加载完毕后,您可以使用clearInterval
清除计时器。
var i = 0;
var textarea = $('.intro p');
var loadTimer = setInterval(function () {
if (i % 4 === 0) textarea.text(loadList[i / 4]); //change text after 3 steps
else textarea.text(textarea.text() + '.'); //add period
((i / 4) < loadList.length) ? i++ : i = 0; //back to start
}, 500);
答案 1 :(得分:0)
一个问题:
i++;
if (i < 4) {
i = 0; // i : 0, 1, 0, 1...
}