Javascript 清除以前设置的间隔
HTMLJavascript 清除以前设置的间隔,javascript,jquery,Javascript,Jquery,HTML 按下easy按钮后,将启动一个事件,每秒向easy发出警报。如果我在之后按硬键,它将启动另一个事件,它将发出警报容易,难,容易,难..,但我希望它只警报当前按下的内容,因此我必须以某种方式清除上一个间隔。我该怎么做?不知何故,当按下另一个对象上的按钮时,我需要调用clearInterval,但我真的不知道如何调用。将其存储在变量中: var interval = setInterval(function(){ //your code },1000); 现在,您可以使用clearInt
按下
easy
按钮后,将启动一个事件,每秒向easy发出警报。如果我在之后按硬键
,它将启动另一个事件,它将发出警报容易,难,容易,难..
,但我希望它只警报当前按下的内容,因此我必须以某种方式清除上一个间隔。我该怎么做?不知何故,当按下另一个对象上的按钮时,我需要调用clearInterval
,但我真的不知道如何调用。将其存储在变量中:
var interval = setInterval(function(){
//your code
},1000);
现在,您可以使用clearInterval清除:
clearInterval(interval);
将其存储在变量中:
var interval = setInterval(function(){
//your code
},1000);
现在,您可以使用clearInterval清除:
clearInterval(interval);
您需要像这样存储和清除间隔
var interval;
function test(mode) {
var asd = this;
this.mode = mode;
if (interval) {
clearInterval(interval);
}
interval = setInterval(function () {
alert(asd.mode);
}, 1000);
}
您需要像这样存储和清除间隔
var interval;
function test(mode) {
var asd = this;
this.mode = mode;
if (interval) {
clearInterval(interval);
}
interval = setInterval(function () {
alert(asd.mode);
}, 1000);
}
每次单击时清除该值
var clear=0;
function test(mode) {
var asd = this;
this.mode = mode;
clear=setInterval(function () {
alert(asd.mode);
}, 1000);
}
$(document).ready(function () {
$('#easy').on('click', function () {
clearInterval(clear);
var stuff = new test('easy');
});
$('#hard').on('click', function () {
clearInterval(clear);
var stuff = new test('hard');
});
});
每次单击时清除该值
var clear=0;
function test(mode) {
var asd = this;
this.mode = mode;
clear=setInterval(function () {
alert(asd.mode);
}, 1000);
}
$(document).ready(function () {
$('#easy').on('click', function () {
clearInterval(clear);
var stuff = new test('easy');
});
$('#hard').on('click', function () {
clearInterval(clear);
var stuff = new test('hard');
});
});
一个怎么样,一个怎么样,在我的代码中我在哪里调用clearInterval?如果我把它放在其他事件中,它将无法访问它。在我的代码中,我在哪里调用clearInterval?如果我把它放在其他事件中,它将无法访问它。除了使用全局变量,没有其他方法吗?我希望它是完全面向对象的。@geogeirimiciuc您应该有一些静态的东西来控制对象之间的间隔。因此,您必须使用全局变量,或测试类静态字段,或将具有间隔的工作包装到单独的静态(帮助器)classIt需要在该函数之外,在您如何组织代码之后,由您决定,但通常建议使用IIFE(闭包)包装您的代码,以便将变量带到全局范围之外。但是
window
无论如何都是一个对象,所以从技术上讲它仍然是OOP;)@作为test
class的静态字段的geogeirimiciuc:除了使用全局变量之外,没有其他方法吗?我希望它是完全面向对象的。@geogeirimiciuc您应该有一些静态的东西来控制对象之间的间隔。因此,您必须使用全局变量,或测试类静态字段,或将具有间隔的工作包装到单独的静态(帮助器)classIt需要在该函数之外,在您如何组织代码之后,由您决定,但通常建议使用IIFE(闭包)包装您的代码,以便将变量带到全局范围之外。但是window
无论如何都是一个对象,所以从技术上讲它仍然是OOP;)@geogeirimiciuc作为test
class的静态字段:gillesc的答案更好:尝试清除ID为0的间隔时(在调用第一个setInterval
之前)会出现错误。此外,您必须在每次新测试之前调用clearInterval
,这不太好。@Regent您是否检查了该代码。即将出现错误。您能告诉我setInterval会发生什么吗rerurn@Regent看到这个url@Regent你知道吗?setInterval函数返回一些数字是,setInterval
返回ID(即数字)。同样,当您将不正确的ID传递给clearInterval
时,它也不会产生错误(如第一次单击时示例中的0)。因此,代码中唯一的问题是在创建新对象之前必须调用clearInterval
,而ESC的答案更好:在调用第一个setInterval
之前,尝试清除ID为0的interval可能会出错。此外,您必须在每次新测试之前调用clearInterval
,这不太好。@Regent您是否检查了该代码。即将出现错误。您能告诉我setInterval会发生什么吗rerurn@Regent看到这个url@Regent你知道吗?setInterval函数返回一些数字是,setInterval
返回ID(即数字)。同样,当您将不正确的ID传递给clearInterval
时,它也不会产生错误(如第一次单击时示例中的0)。因此,代码中唯一的问题是在创建新对象之前必须调用clearInterval