「stringone」というフレーズのように、フレーズをゆっくりと入力するために使用するjQuery関数がsetInterval()
あります。各文字は、設定されたミリ秒数後に画面に出力されます。
問題は、私のコードでは、関数への2つの呼び出しが次々に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");
問題は、「文字列1」と「文字列2」の両方が同時に起動し、無限にループを開始するか、最初の1つだけが機能することです。
これを修正する方法があるかどうかは本当にわかりませんが、検索しても何も得られませんでした。これが一般的な問題かどうかはわかりません。最初のストリングが完了するまで、2番目のストリングが発火しないようにする方法はありますか?
よろしくお願いします。