簡體   English   中英

相互調用函數,反之亦然

[英]Calling functions one from the other and vice versa

我有兩個帶兩個布爾變量和兩個函數的計時器。 第一個計時器是由將一個布爾值設為真的點擊觸發的; 一旦計時器達到某些條件,該計時器將關閉,將布爾值設置為false,並觸發另一個計時器,將第二個布爾值設置為true並調用第二個計時器。

同樣,一旦第二個計時器達到某些條件,計時器將關閉第二個布爾值false的設置,而我嘗試觸發第一個計時器,將第一個布爾值true設置為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*/
     });

嘗試

$(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);

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM