为什么这段代码不能关闭setInterval?我点击一个元素来启动它,它开始很好(以5秒的间隔淡入和淡出div #content)。我点击一个元素来阻止它,它只是继续淡入淡出周=当前,即使它最初加载了适当的一周。
我是否将该函数与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";
答案 0 :(得分:1)
refresh
在StartStop
内定义为本地,在StartStop
的调用之间不会保存其值。
尝试在它之外定义它,例如:
var refresh;
function StartStop(txt) {
refresh = setInterval(/* ... */);
}
此外,您可能希望在创建新的refresh
之前清除它:
if (txt == 'on') {
if(refresh) clearInterval(refresh);
refresh = setInterval(/* ... */);
}