Javascript 设置间隔和清除间隔的正确方法

Javascript 设置间隔和清除间隔的正确方法,javascript,setinterval,clearinterval,Javascript,Setinterval,Clearinterval,对JS来说相对来说是新手,我试图把我的脑袋绕在日程安排上。此代码将启动追加,但不会停止追加。我很确定问题在于“clearInterval”需要处理一个已经分配了“setInterval”函数的变量。我似乎无法理解的是如何恰当地表达这一点 var hmm = function appendStuff(){ $("p").append("<b>Appended text</b>"); }; $("#start").click(function() { c

对JS来说相对来说是新手,我试图把我的脑袋绕在日程安排上。此代码将启动追加,但不会停止追加。我很确定问题在于“clearInterval”需要处理一个已经分配了“setInterval”函数的变量。我似乎无法理解的是如何恰当地表达这一点

var hmm = function appendStuff(){
    $("p").append("<b>Appended text</b>");
};
$("#start").click(function() {   
    console.log("startClicked");  // working... 
    window.setInterval(hmm, 1000) // working...
}); 
$("#stop").click(function() {   
    console.log("stopClicked");  // working...  
    window.clearInterval(hmm)
}); 
var-hmm=函数appendStuff(){
$(“p”)。附加(“附加文本”);
};
$(“#开始”)。单击(函数(){
console.log(“startClicked”);//正在工作。。。
setInterval(嗯,1000)//正在工作。。。
}); 
$(“#停止”)。单击(函数(){
console.log(“stopClicked”);//正在工作。。。
窗口清除间隔(hmm)
}); 
谢谢

函数
setInterval()
返回一个ID。这是您要分配给
hmm
的ID

另外,
setInterval()
的第一个参数是要调用每个interval的函数

var hmm = null;
function appendStuff(){
    $("p").append("<b>Appended text</b>");
};
$("#start").click(function() {   
    console.log("startClicked");  // working... 
    hmm = window.setInterval(appendStuff, 1000) // working...
}); 
$("#stop").click(function() {   
    console.log("stopClicked");  // working...  
    window.clearInterval(hmm)
}); 
var-hmm=null;
函数appendStuff(){
$(“p”)。附加(“附加文本”);
};
$(“#开始”)。单击(函数(){
console.log(“startClicked”);//正在工作。。。
hmm=window.setInterval(appendStuff,1000)//正在工作。。。
}); 
$(“#停止”)。单击(函数(){
console.log(“stopClicked”);//正在工作。。。
窗口清除间隔(hmm)
}); 

您需要将setInterval对象分配给一个变量并将其传递给clearInterval,而不是将setInterval的function变量传递给clearInterval。参考

var-hmm=函数appendStuff(){
$(“p”)。附加(“附加文本”);
};
var区间;
$(“#开始”)。单击(函数(){
console.log(“startClicked”);//正在工作。。。
interval=window.setInterval(hmm,1000)//正在工作。。。
}); 
$(“#停止”)。单击(函数(){
console.log(“stopClicked”);//正在工作。。。
窗口清除间隔(间隔)
}); 

您可以使用w3School提供的这个setInterval()示例。基本上,您使用的语法如下:

var yourIntervalVariable = setInterval(function(){
  // do something here..
}, 1000);
然后可以对变量使用clearInterval(),如下所示:

clearInterval(yourIntervalVariable);

基于此,看起来您需要将
clearInterval
应用于
setInterval
的返回值,但不应用于您为“另外,setInterval()的第一个参数是您要调用每个间隔的函数”设置的间隔的函数。-是的,OP的代码已经这样做了。我知道。但既然我们已经改变了hmm的价值,我只是澄清它不应该再是hmm了。
clearInterval(yourIntervalVariable);