0

これが私のコードです

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 afterclearIntervalsetIntervalメソッド内で呼び出されないことです。この例はfiddleにあります。In Fiddlevar intervalは DomReady の内部にあります。DomReady の外にある必要があります。フィドルで DomReady の外に置く方法がわかりません。

なぜこれが起こるのですか?

これを修正する方法は?

4

1 に答える 1

1

このデモをチェックしてください: http://jsfiddle.net/QZxtL/1/

あなたがする必要があるのは、あなたのclearInterval電話をに変更することだけですclearInterval(interval);

: テストを簡単にするために、間隔を 1000 ミリ秒に変更しました。:-)

于 2012-11-03T09:51:38.147 に答える