Javascript 如何在生成第二个间隔值后清除第一个间隔值

Javascript 如何在生成第二个间隔值后清除第一个间隔值,javascript,setinterval,clearinterval,Javascript,Setinterval,Clearinterval,我有一个函数,它会在点击按钮后每两秒钟连续生成一个值 如果按钮点击2次,则函数将生成2个值,以此类推 我在第二次单击时使用clearInterval,以此类推,以避免重复值 var clickValue=0; 函数func(){ var值=0; var generateValue=函数(){ 值=值+1; console.log('value:'+value); } var startInterval=setInterval(generateValue,2000); clickValue=cl

我有一个函数,它会在点击按钮后每两秒钟连续生成一个值

如果按钮点击2次,则函数将生成2个值,以此类推

我在第二次单击时使用
clearInterval
,以此类推,以避免重复值

var clickValue=0;
函数func(){
var值=0;
var generateValue=函数(){
值=值+1;
console.log('value:'+value);
}
var startInterval=setInterval(generateValue,2000);
clickValue=clickValue+1;
log(clickValue+click');
如果(单击值>1){
clearInterval(startInterval);
日志(“+clickValue+”单击清除“)上的间隔);
}
}
像这样点击

var clickValue=0;
var值=0;
startInterval变种;
函数func(){
var generateValue=函数(){
值=值+1;
console.log('value:'+value);
}
startInterval=设置间隔(generateValue,2000);
clickValue=clickValue+1;
log(clickValue+click');
如果(单击值>1){
clearInterval(startInterval);
log(“+(clickValue-1)+”单击“清除”上的间隔);
数值=0;
}
}
单击
尝试以下操作

var clickValue = 0;
var startInterval;
function func() {
  var value = 0;
  var generateValue = function() {
    value = value + 1;
    console.log('value: ' + value);
  }

  clearInterval(startInterval);

  startInterval = setInterval(generateValue, 2000);

  clickValue = clickValue + 1;
  console.log(clickValue + ' click');

  if (clickValue > 1) {
    console.log('Interval on ' + (clickValue-1) + ' click cleared');
  }
}
这里的值对于每次单击都是新的。

var clickValue=0;
var lastId=null;
函数func(){
//清除最后间隔
清除间隔(lastId);
console.log('clickValue+'clickcleared'上的间隔)
单击值++;
log(clickValue+click');
//开始新的间隔
var值=0;
lastId=setInterval(函数(){
值++;
console.log('value:'+value);
}, 2000)
}

单击
非常感谢您的回答。您应该在设置setInterval之前调用clearInterval,否则它将始终仅清除最后一个interval。这不会清除第一个interval,而是清除新创建的interval(只说它清除了日志消息中的第一个)。第一个仍在运行。而是清除上一个间隔
startInterval=setInterval(generateValue,2000)
应该移到if语句后面,其中包含
clearinterval
。非常感谢您的回答。任何让提问者走上正确方向的回答都是有帮助的,但请务必在回答中提及任何限制、假设或简化。简洁是可以接受的,但更全面的解释更好。