Javascript 从一个函数调用另一个函数,反之亦然

Javascript 从一个函数调用另一个函数,反之亦然,javascript,jquery,timer,Javascript,Jquery,Timer,我有两个计时器,两个布尔变量和两个函数。第一个计时器由点击触发,点击将其中一个布尔值置为真;一旦计时器达到某些条件,此计时器将关闭设置为false的布尔值,另一个计时器将触发设置为true的第二个布尔值并调用第二个计时器 同样,一旦第二个计时器达到某些条件,计时器关闭,将第二个布尔值设置为false,我尝试触发第一个计时器将第一个布尔值设置为true并调用第一个计时器,但它不起作用 我无法调用在我进行调用的函数下面声明的函数。 我的JavaScript代码是: var active=false;

我有两个计时器,两个布尔变量和两个函数。第一个计时器由点击触发,点击将其中一个布尔值置为真;一旦计时器达到某些条件,此计时器将关闭设置为false的布尔值,另一个计时器将触发设置为true的第二个布尔值并调用第二个计时器

同样,一旦第二个计时器达到某些条件,计时器关闭,将第二个布尔值设置为false,我尝试触发第一个计时器将第一个布尔值设置为true并调用第一个计时器,但它不起作用

我无法调用在我进行调用的函数下面声明的函数。

我的JavaScript代码是:

var active=false;
var activeBreak=false;
...
function breakDown(){
     if(activeBreak){
         ...
         if(some conditions){
                 active=true;
                 activeBreak=false;
                 countDown();// **This call doesn't work.Black in                                                jsbin**
             }
         }

  }

function countDown(){
           if(active){
               ...
               if(someConditions){
                    active=false;
                    activeBreak=true;
                    breakDown();// *This call works. Blue in jsbin*
                 }
             }
 }
...

$("#circle").click(function(){
           active=true;
           countDown(); // *This call works*/
     });
试一试

$(文档).ready(函数(){
/*全局变量*/
变量状态='停止';
var-timeSession=1;
var timeBreak=1;
var超时=0;
功能重置计时器(时间){
超时=(新日期()).getTime()+(时间*60*1000);
}
函数changeState(){
如果(状态=='SESSION'){
状态=‘中断’;
重置定时器(时断);
}else if(状态=='BREAK'| |状态=='STOPPED'){
状态='会话';
重置计时器(timeSession);
}
$('#text')。text(state);
}
/*倒计时功能****************************/
函数倒计时(){
如果(状态!=“已停止”){
var time=(新日期()).getTime();
如果(超时1){
--时断;
}
$(“#breakContent”).html(timeBreak);
});
$(“#breakPlus”)。单击(函数(){
++时断;
$(“#breakContent”).html(timeBreak);
});
/******单击会话长度***************/
$(“#seMinus”)。单击(函数(){
如果(timeSession>1){
--时差;
}
$(“#seContent”).html(timeSession);
});
$(“#sePlus”)。单击(函数(){
++时差;
$(“#seContent”).html(timeSession);
});    
/***********点击圆圈****************/
$(“#圈”)。单击(更改状态);
设置超时(倒计时,1000);
$('#text')。text(state);
});

您能否提供一个?也许“someConditions”永远不会发生?。是否使用js超时函数?是的,这些条件会发生。我使用的是jsbin.com,函数countDown中对breakDown()的调用为蓝色(活动),但函数breakDown中对countDown()的调用为黑色(无活动)这就是发生的情况。你能解释一下你想要的行为吗?在同一个地方有两个时钟:会话和中断。时钟会话首先通过单击调用函数倒计时的div来触发。一旦倒计时达到00:00,时钟会话将关闭,并启动时钟中断禁用函数倒计时和启动功能崩溃。当崩溃达到00:00时,操作点相同:时钟会话应再次启用禁用功能崩溃并调用倒计时。最后一种情况不会发生:在功能崩溃中对倒计时的调用未激活。当时钟运行时,更改中断或会话长度有何作用?这些更改是否生效仅在时钟结束时达到0?仅在时钟结束时生效:会话(00:59,00:58,00:57,…)当达到00.00时,div显示中断(00:59,00:58,00:57,…)当达到00.00时,div应显示会话(00:59,00:58,00:57,…)
$(document).ready(function(){

/* Global variables */
var state = 'STOPPED';
var timeSession = 1;
var timeBreak = 1;

var timeout = 0;

function resetTimer(time) {
  timeout = (new Date()).getTime() + (time*60*1000);
}

function changeState() {

  if (state === 'SESSION') {
    state = 'BREAK';
    resetTimer(timeBreak);
  } else if (state === 'BREAK' || state === 'STOPPED') {
    state = 'SESSION';
    resetTimer(timeSession);
  }
  $('#text').text(state);
}

/* Function for the countdown ****************************/
function countDown (){

  if (state !== 'STOPPED') {
    var time = (new Date()).getTime();

    if (timeout <= time) {
      changeState();
      return;
    }

    var s = Math.floor((timeout - time) / 1000);
    var m = Math.floor(s / 60);
    s = s - m*60;

    $('#timer').text(""+((timeout - time) / 1000)+" "+timeout+" "+m+":"+("0"+s).substr(-2));

  }
  setTimeout(countDown, 1000);
}

/*****Click Break ********************/
$("#breakMinus").click(function(){
  if (timeBreak > 1) {
    --timeBreak;
  }
  $("#breakContent").html(timeBreak);
});

$("#breakPlus").click(function(){
  ++timeBreak;
  $("#breakContent").html(timeBreak);
});

/******Click Session Length****************/ 
$("#seMinus").click(function(){
  if (timeSession > 1) {
    --timeSession;
  }
  $("#seContent").html(timeSession);
});

$("#sePlus").click(function(){
  ++timeSession;
  $("#seContent").html(timeSession);
});    

/***********Click circle****************/
$("#circle").click(changeState);


setTimeout(countDown, 1000);
$('#text').text(state);

});