繁体   English   中英

setInterval:为什么不重置?

[英]setInterval: Why isn't it resetting?

为什么这段代码无法关闭setInterval? 我单击一个元素以启动它,它开始正常(每5秒间隔淡入和淡出div #content)。 我单击一个元素将其停止,即使它最初加载正确的星期,它也将继续在Week = current上淡入淡出。

是否将函数与jQuery封装分离并不重要。 任何帮助表示赞赏。

  $out .= '<script type="text/javascript">'."\n";
  $out .= '$(document).ready(function () {'."\n";
  $out .= '  $("span.archives").click(function () {'."\n";
  $out .= '    $("#content").load("update.php?week=" + this.id);'."\n";
  $out .= '    if (this.id == \'current\') {'."\n";
  $out .= '      StartStop(\'on\');'."\n";
  $out .= '    } else {'."\n";
  $out .= '      StartStop(\'off\');'."\n";
  $out .= '    }'."\n";
  $out .= '  });'."\n";

  $out .= '  function StartStop(txt) {'."\n";
  $out .= '    if (txt == \'on\') {'."\n";
  $out .= '      var refresh = setInterval(function() {'."\n";
  $out .= '        $("#content").fadeOut("slow", function() {'."\n";
  $out .= '          $("#content").load("update.php?week=current", function() {'."\n";
  $out .= '            $("#content").delay(250).fadeIn("slow");'."\n";
  $out .= '          });'."\n";
  $out .= '        });'."\n";
  $out .= '      }, 5000);'."\n";
  $out .= '    } else {'."\n";
  $out .= '      clearInterval(refresh);'."\n";
  $out .= '    }'."\n";
  $out .= '  }'."\n";
  $out .= '});'."\n";
  $out .= '</script>'."\n";

refresh的内本地定义StartStop ,它的价值不被保存调用之间StartStop
尝试在其外部定义它,例如:

var refresh;

function StartStop(txt) {
    refresh = setInterval(/* ... */);
}

另外,您可能需要在创建新refresh之前清除以前的refresh

if (txt == 'on') {
    if(refresh) clearInterval(refresh);
    refresh = setInterval(/* ... */);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM