复选框未选中后,jQuery函数循环不会停止

时间:2015-01-22 02:33:47

标签: javascript jquery loops checkbox

我有一个复选框,它启动一个名为" 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);
        }
      }
  );

此致

1 个答案:

答案 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 );
  }
});