2015-08-14 51 views
0

所以我用这个很容易使用JavaScript调用倒计时插件如何从一个倒计时的方法在JavaScript中返回一个布尔

The Final Countdown

它为我提供了一个方法,让我树立了倒计时一定时间,像这样:

$('#countdown').countdown('2015/12/25', function(event) { 
    $(this).html(event.strftime('<div class="days">%D</div> <div class="hours">%H</div> <div class="mins">%M</div> <div class="secs">%S</div>')); 
}); 

目标:

我有这个COUN tdown工作得很好,现在我想在特定日期显示某张照片。 (对于这个问题的缘故,我将不会显示任何图像只是一个简单的警告框)

所以我做了这样的事情:

$('#countdown').countdown('2015/10/13', function(event) { 
    $(this).html(event.strftime('<div class="days">%D</div> <div class="hours">%H</div> <div class="mins">%M</div> <div class="secs">%S</div>')); 

if($(".secs").html() == 35){ 
    alert("The Second is 35!"); 
} 

}); 

当我想检测某个这一工程时间就好了。但是,如果我尝试使用该功能的条件OUTSIDE,它当然不会起作用。

所以我的想法是“好吧,所以我需要检查一定的时间,只能在该功能中完成,我必须改变该功能以外的内容,我将如何做到这一点?而我想到了一个布尔是完美的。所以然后我尝试:

var timeCheck; 

$('#countdown').countdown('2015/10/13', function(event) { 
    $(this).html(event.strftime('<div class="days">%D</div> <div class="hours">%H</div> <div class="mins">%M</div> <div class="secs">%S</div>')); 

if($(".secs").html() == 35){ 
    timeCheck = true; 
} 

}); 

//outside of the function 
if(timeCheck === true){ 
    alert("The Boolean worked!"); 
} 

并遗憾的是没有奏效。我无法弄清楚这个问题,或者这是否是正确的方法。虽然我看到了一个可能的解决方案。

我最终的目标是在该函数中设置3个条件,并在符合条件时将3个变量设置为true,然后在该函数外使用一个条件并查看该变量是否为true,如果是显示图片。

所以真的问题是为什么这不会改变变量timeCheck的值?

非常感谢帮助,谢谢。

(快速更新)我离开了小HTML有:

<div id="countdown"></div> 
+0

应该改变变量的值。你怎么知道它不是?函数外的'if'语句只运行一次。 – Stryner

+0

@Stryner如果我打开控制台并记录它,它会给我一个var undefined错误。所以这甚至没有改变。嗯,那么有没有办法让它再次运行来检查变量的值? –

+0

只是为了确认,变量是在全局范围内,而不是'$(document).ready'或任何其他函数中? – Stryner

回答

1

这似乎更像是你想要的。基本上,你应该发出一个函数调用时您需要的条件都满足:

var timeCheck; 

$('#countdown').countdown('2015/10/13', function(event) { 
    $(this).html(event.strftime('<div class="days">%D</div> <div class="hours">%H</div> <div class="mins">%M</div> <div class="secs">%S</div>')); 

    if($(".secs").html() == 35){ 
     TimePassed(); 
    } 

}); 

function TimePassed(){ 
    alert("I want to do something now!"); 
} 

你可以得到与事件和回调票友,但这种设置应直接目的的工作。

编辑:因为OP问,这是该事件的做法是什么样子的未经检验的近似:

var timeCheck; 

$('#countdown').countdown('2015/10/13', function(event) { 
    $(this).html(event.strftime('<div class="days">%D</div> <div class="hours">%H</div> <div class="mins">%M</div> <div class="secs">%S</div>')); 

    if($(".secs").html() == 35){ 
     $(this).trigger("ThirtyFiveSecondsLeft"); 
    } 
}).on("ThirtyFiveSecondsLeft", function(evt){ alert("I want to do something now!"); }); 
+0

这很好,但我真的很好奇,为什么我的代码不工作。我改变了正确的值,但在控制台,它给了我一个错误var timeCheck undefined。 –

+0

如果你不介意,我想看一个事件并回电的例子,听起来很有趣。你不需要:] –

+0

这是因为timeCheck在倒数发出回调后才会被设置。因此,您的“if”语句在timeCheck的值被实际设置之前运行。为了明白我的意思,在设置timeCheck的值之后立即设置“alert()”以查看时间。 – Colin

相关问题