我有一个复选框,它启动一个名为" next"的函数的循环。到目前为止,这项工作是正确的。 Unckecked box应该停止功能循环。这不起作用。我在stackoverflow-forum中发现,有必要在if-else语句之外声明一个Interval-ID的变量。没有成功。有任何想法吗? 这是代码:
$('input[type="checkbox"]').click(function(){
var intervalID = 0;
if($(this).is(":checked")){
var intervalID = setInterval(next, 400);
}
else if($(this).is(":not(:checked)")){
clearInterval(intervalID);
}
}
);
此致
答案 0 :(得分:1)
“我在stackoverflow-forum中发现,有必要在if-else语句之外声明一个Interval-ID变量”
范围远不止于此。在您的情况下,当您初始化函数内部的变量时,它仅在该函数内可用。我强烈建议阅读范围,那里有很多很好的信息,这里不需要重复。例如:http://www.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/
您确实需要运行代码才能了解正在发生的事情。看看代码并考虑一下。每次点击复选框,您都会将intervalID
设置为0
。因此clearInterval
函数不起作用并不奇怪。
您需要将整个点击功能的变量存储在之外,以便下次触发事件时可以访问该变量。此外,else
就足够了。只有2种可能的选择;如果第一次检查返回false,那么你知道它没有被检查 - 你不需要测试它。
var intervalID = 0;
$('input[type="checkbox"]').click(function(){
if ( $(this).is(":checked") ) {
intervalID = setInterval( next, 400 );
}
else {
clearInterval( intervalID );
}
});