如何在Javascript中的全局变量递增时递减,反之亦然?

如何在Javascript中的全局变量递增时递减,反之亦然?,javascript,Javascript,我有一个工作代码,它基本上是每1秒递增或递减一个全局变量basenum,这取决于标志值是真还是假 var flag = true; var basenum = 0; var p = document.getElementById('result'); function foo1(){ function bar(){ result = basenum++; p.innerHTML = result; } return bar; } function foo2(

我有一个工作代码,它基本上是每1秒递增或递减一个全局变量
basenum
,这取决于
标志
值是真还是假

var flag = true;
var basenum = 0;

var p = document.getElementById('result');
function foo1(){
  function bar(){
    result = basenum++;
    p.innerHTML = result;
  }  
  return bar;  
}
function foo2(){
  function bar(){
    result = basenum--;
     p.innerHTML = result;
  }  
  return bar;  
}

var baz1 = foo1();
var baz2 = foo2();

setInterval(function(){
  if(flag){
    baz1();
  }else{
    baz2();
  }  
}, 1000);
问题是我不想在每次标志更改为true或false时将其重置回零。 当前,如果flag设置为true,则p的innerHTML将递增,但当我将flag更改为false时,它将重置为零,然后执行递减

我想要的是,当它递增时,我将flag的值更改为false,递减从最后一个递增值开始,而不是从零开始

你知道如何用我目前的代码实现吗?短暂性脑缺血发作

此处

如果有用,请检查此项


嗯,您的代码已经这样做了-我添加了一个更改标志的按钮(请记住,标志开关不会影响最新运行的intervalled函数)这有什么问题:?(除了jquery)检查你的小提琴我使用了另一个setInterval来重置标志。你的代码很好。是的,你的代码是正确的。但是,如果您更改了JSFIDLE中的标志,则会重新启动执行。小提琴的变化不是实时评估的。耶,看起来不错:
$(".btncl").click(function (){
    flag = false;
}); 

var flag = true;
var basenum = 0;

var p = document.getElementById('result');
function foo1(){
  function bar(){
    result = basenum++;
    p.innerHTML = result;
  }  
  return bar;  
}
function foo2(){
  function bar(){
    result = basenum--;
     p.innerHTML = result;
  }  
  return bar;  
}

var baz1 = foo1();
var baz2 = foo2();

setInterval(function(){
  if(flag){
    baz1();
  }else{
    baz2();
  }  
}, 1000);