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