Javascript 如何为我们使用clearInterval()函数?
无法终止我在启动中创建的Javascript 如何为我们使用clearInterval()函数?,javascript,Javascript,无法终止我在启动中创建的setInterval。它一直工作到时间结束。我想在next()函数和prev()函数中使用clearInterval(interval)操作。我该怎么做?当我单击“前进”时,我希望clearInterval(interval)运行此操作,但我不能 函数启动(){ thisTimeline=document.getElementsByClassName('story-active-'+start)[0]; var maxtime=5000; var增量=100; var
setInterval
。它一直工作到时间结束。我想在next()
函数和prev()
函数中使用clearInterval(interval)
操作。我该怎么做?当我单击“前进”时,我希望clearInterval(interval)
运行此操作,但我不能
函数启动(){
thisTimeline=document.getElementsByClassName('story-active-'+start)[0];
var maxtime=5000;
var增量=100;
var实际时间=0;
var interval=setInterval(函数(){
实际时间+=增量;
var百分比=数学ceil((100/最大时间)*实际时间);
thisTimeline.style.width=百分比+'%';
如果(百分比==100){
间隔时间;
thisTimeline.style.width=“0%”;
}
},增量);
}
函数next(){
//将上一个视频时间线设置为100%完成
thisTimeline.style.width='100%';
//将播放计数提前到下一个视频
启动++;
//如果下一个视频不存在(即上一个视频是最后一个视频),则关闭社交故事弹出窗口
如果(开始>=默认值.playlist.length){
setTimeout(函数(){
close();
返回false;
}, 400);
}否则{
//否则,运行下一个视频
发射(启动);
}
}
函数prev(){
如果(开始!=0){
thisTimeline.style.width='0%';
}
//将播放计数减去上一个视频
开始--;
//如果下一个视频不存在(即上一个视频是最后一个视频),则关闭社交故事弹出窗口
如果(开始<0){
开始=0;
返回false;
}否则{
//否则,请运行上一个视频
发射(启动);
}
}
这是@lagoCalazans注释的扩展
他说的是,在你的变量中,“间隔”是在你的启动函数中创建的。您需要将“interval”设置为全局,以清除设置的interval
例:
正如您在启动函数中看到的,“tempInterval”仅限于启动范围,因此无法在其他任何地方访问,但现在由于“interval”是全局的,因此可以在任何函数中访问它。您的代码似乎有点不完整,因此,仅出于说明目的,我假设您将这些函数封装在一个高阶函数中(如a),并且将避免编写该函数(例如,某种全局状态或变量也可以) 首先,
setInterval
将返回一个您稍后将使用的id,因此如果您想在next
和prev
中使用它,您需要该值对他们可用
因此,在您的示例中,您应该在启动
外部声明间隔
,并在内部为其分配一个值:
let间隔
函数启动(){
// ...
interval=setInterval(函数(){…})
}
然后在任何需要的地方使用
interval
。launch
,next
和prev
是三个独立的功能。它们不引用相同的间隔
,因为它们不共享。提高间隔
变量的范围
let interval='';//在这里声明,所有函数都可以访问interval
函数启动(){
// ...
//在间隔之前删除var
间隔=设置间隔(…)
}
函数next(){
// ...
//在间隔之前删除var
间隔=设置间隔(…)
}
函数prev(){
// ...
//在间隔之前删除var
间隔=设置间隔(…)
}
你的上一个()和下一个()都有自己的作用域。@IagoCalazans我不明白..惊人的解释!
let interval = null; //global
function launch() {
let tempInterval = setInterval(function() {
//whatever code
},100);
interval = setInterval(function(){
console.log("Hello");
}, 100);
}
function clear() {
//Since interval is global I can clear it when I call clear();
clearInterval(interval);
}