これが私のコードです
HTMLコード
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
</ul>
以下はJavascriptコードの一部です
//The below line is outside of document ready
var interval;
//The below code is wraped in document ready
$("input").live("click", function(){
var length = $('li').length, start = 1;
alert(length+' : '+start);
interval = setInterval(function() {
if (length > 0 && start <= length) {
alert('IF section');
$('li:nth-child('+start+')').
removeClass('hidden').addClass('visible');
start++;
} else {
alert('Else section with before clearInterval called');
clearInterval(interval);
alert('Else section with after clearInterval called');
}
}, 3000);
});
ここでは、メソッドの実行ELSE
後にセクションが繰り返し呼び出さclearInterval
れます。興味深い点の 1 つは、 alert beforeclearInterval
ステートメントが繰り返し呼び出されるのに対し、alert afterclearInterval
はsetInterval
メソッド内で呼び出されないことです。この例はfiddleにあります。In Fiddlevar interval
は DomReady の内部にあります。DomReady の外にある必要があります。フィドルで DomReady の外に置く方法がわかりません。
なぜこれが起こるのですか?
これを修正する方法は?