我有一个 jQuery 函数,用于setInterval()
慢慢输入一个短语——就像短语“string one”一样,每个字符都会在设定的毫秒数后打印到屏幕上。
问题是,在我的代码中,我一个接一个地对函数进行了两次调用,并且它们重叠,因为它似乎setInterval()
不会停止正常的代码流。很难解释,这是我的 jsFiddle,它显示了会发生什么。
这是我的功能:
function type(text) {
if(intv == null) {
var textArray = text.split("");
var length = textArray.length - 1;
var i = 0;
$("#div").append('<p class="text' + n + '"></p>' + "\n"); // creates a paragraph to print every character to (n is a global var)
intv = setInterval(function() {
if(i <= length) {
var a = textArray[i];
$('#div .text' + n).text($('#div .text' + n).text() + a); // appends the character to the paragraph created above
i++;
}
else {
alert("stopping interval..."); // just lets me know when the interval is stopping
clearInterval(intv);
intv = null;
n++;
}
}, 60);
}
else {
alert("the interval is not null"); // lets me know if the previous setInterval has stopped firing
}
}
我是这样称呼它的:
type("string one");
type("string two");
问题是“弦一”和“弦二”最终同时触发,或者开始无限循环,或者只有第一个有效。
我真的不知道是否有办法解决这个问题,我的搜索没有任何结果。我不知道这是否是一个普遍的问题。有没有办法让第二根琴弦在第一根琴弦完成之前不触发?
提前谢谢。