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