Javascript setInterval:为什么不';不是吗?

Javascript setInterval:为什么不';不是吗?,javascript,jquery,setinterval,Javascript,Jquery,Setinterval,为什么这段代码不能关闭setInterval?我单击一个元素来启动它,它就开始了(每隔5秒淡入淡出一个div内容)。我单击一个元素来停止它,它只会在week=current时继续淡入淡出,即使它最初加载的是正确的一周 我是否将函数与jQuery封装分离并不重要。谢谢你的帮助 $out .= '<script type="text/javascript">'."\n"; $out .= '$(document).ready(function () {'."\n"; $out

为什么这段代码不能关闭setInterval?我单击一个元素来启动它,它就开始了(每隔5秒淡入淡出一个div内容)。我单击一个元素来停止它,它只会在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";
$out.=''。“\n”;
$out.='$(文档).ready(函数(){.“\n”;
$out.='$(“span.archives”)。单击(函数(){”。“\n”;
$out.='$(“#content”).load(“update.php?week=“+this.id”)”。“\n”;
$out.='if(this.id=\'current\'){'。“\n”;
$out.='StartStop(\'on\');'。“\n”;
$out.='}其他{'.“\n”;
$out.='StartStop(\'off\');'。“\n”;
$out.='}'。“\n”;
$out.='});'.“\n”;
$out.='函数StartStop(txt){'。“\n”;
$out.='if(txt=='on\'){'。“\n”;
$out.='var refresh=setInterval(函数(){'。“\n”;
$out.='$(“#内容”).fadeOut(“慢”,function(){”。“\n”;
$out.='$(“#content”).load(“update.php?week=current”,function(){.”“\n”;
$out.='$(“#内容”).delay(250).fadeIn(“slow”);'。“\n”;
$out.='});'.“\n”;
$out.='});'.“\n”;
$out.='},5000);'.“\n”;
$out.='}其他{'.“\n”;
$out.='clearInterval(刷新);'。“\n”;
$out.='}'。“\n”;
$out.='}'。“\n”;
$out.='});'。“\n”;
$out.=''。“\n”;

刷新
StartStop
中定义了本地,在调用
StartStop
之间不会保存其值
尝试在外部定义它,例如:

var refresh;

function StartStop(txt) {
    refresh = setInterval(/* ... */);
}
此外,在创建新的
刷新之前,您可能需要清除以前的
刷新

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

refresh
是在
StartStop
中定义的本地,它的值不会在调用
StartStop
之间保存
尝试在外部定义它,例如:

var refresh;

function StartStop(txt) {
    refresh = setInterval(/* ... */);
}
此外,在创建新的
刷新之前,您可能需要清除以前的
刷新

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

有什么理由在PHP中将JavaScript代码存储为字符串?调试(和维护)非常困难。即使您将其存储在代码中,PHP字符串文字也可以跨越多行:是的,我还没有真正做过任何优化。不过,这是一个Wordpress插件。你有什么理由在PHP中将JavaScript代码存储为字符串吗?调试(和维护)非常困难。即使您将其存储在代码中,PHP字符串文字也可以跨越多行:是的,我还没有真正做过任何优化。不过这是一个Wordpress插件。@daveycroqet-没问题,很乐意帮忙!顺便说一句,谢谢你把我的声誉推到了30K以上
:)
@daveycroqet-没问题,很乐意帮忙!顺便说一句,谢谢你把我的声誉推到30K以上
:)