这是我的代码
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
一件有趣的事情是alert beforeclearInterval
语句被重复调用,而alert afterclearInterval
没有在setInterval
方法中调用。你可以在fiddle中找到一个例子。在 Fiddlevar interval
里面是 DomReady。它应该在 DomReady 之外。我不知道如何把它放在 DomReady 之外。
为什么会发生这种情况?
如何纠正这个?