如何在if语句中调用函数-javascript
我有一个间隔集,当有人点击一个叫做“重置”的按钮时,我想清除/结束它。这样,开始间隔的函数是新的,可以接受新的值 如何做到这一点 这是我的密码:如何在if语句中调用函数-javascript,javascript,jquery,function,Javascript,Jquery,Function,我有一个间隔集,当有人点击一个叫做“重置”的按钮时,我想清除/结束它。这样,开始间隔的函数是新的,可以接受新的值 如何做到这一点 这是我的密码: <div class="grid"> <div id="circle" class="center"> <div id="timer" class="fl"></div> <div class="grid"> <div class="col-1-2
<div class="grid">
<div id="circle" class="center">
<div id="timer" class="fl"></div>
<div class="grid">
<div class="col-1-2 center">
<div class="circleSelect">
<select id="min" class="fm">
<option value="0">0 minutes</option>
<option value="300">5 minutes</option>
<option value="600">10 minutes</option>
<option value="900">15 minutes</option>
<option value="1200">20 minutes</option>
<option value="1500">25 minutes</option>
</select>
</div>
</div>
</div>
</div>
</div>
<div class="grid">
<div class="col-1-3 center centerText prZ ptm">
<div id="begin">
<a class="btn fm" onClick="begin()">Begin Meditation</a>
</div>
<div id="during" class="opacity">
<a class="btn fm black" onClick="stop()">Pause</a>
<a class="btn fm red" onClick="resetTime()">Reset</a>
<a class="btn fm red" onClick="finish()">Finish Test</a>
</div>
<div id="finish" class="centerText ptm grid opacity">
<div id="quote" class="pbm col-1-2 center">
<p class="centerText fm">"Do not dwell in the past, do not dream of the future, concentrate the mind on the present moment."
<p class="fm">- Buddha</p>
</p>
</div>
<a id="again" class="btn fm" onClick="again()">Meditate Again</a>
</div>
</div>
<audio id="soundName" style="display: none;"></audio>
</div>
<script>
function begin() {
var min = parseInt($('#min').val(), 10);
var sec = 1;
var time = min + sec;
setInterval( function() {
if (time > 0){
--time;
}
else if(time == 0){
time = -1;
finish();
}
}, 1000);
function convertTime() {
var mins = Math.floor((min % 3600) / 60);
var secs = (sec % 60);
// return humanTime;
if (mins >= 0){
var timeTravel = setInterval( function() {
--secs;
if (secs == -1 && min > 0){secs = 59; --mins;} // changes the minute
else if (secs == 0 && min == 0) {clearInterval(timeTravel);} // stops at 00:00
var humanTime = (((mins < 10) ? "0" : "") + mins + ":" + ((secs < 10) ? "0" : "") + secs);
$('#timer').html(humanTime).fadeIn(200);
}, 1000);
} else {}
}
convertTime();
$('#begin').fadeToggle(200);
$('.selectStyle').fadeToggle(200);
$('.circleSelect').fadeToggle(200);
$('#during').delay(200).fadeToggle(400);
}
function stop() {
}
function resetTime(interval) {
$('#during').fadeToggle(200);
$('#begin').delay(200).fadeToggle(400);
$('.selectStyle').fadeToggle(200);
var interval = clearInterval(timeTravel);
resetTime();
}
function finish() {
$('#during').fadeOut(200);
$('#circle').fadeOut(500);
$('#finish').insertAfter('#circle').delay(1000).fadeToggle(400);
}
function again() {
$('#finish').fadeOut(200);
$('#begin').delay(200).fadeToggle(200);
$('#circle').delay(200).fadeToggle(400);
$('.selectStyle').fadeToggle(200);
}
</script>
0分钟
5分钟
10分钟
15分钟
20分钟
25分钟
开始冥想
暂停
重置
完成测试
“不要沉湎于过去,不要梦想未来,将注意力集中在当下。”
-佛陀
再冥想
函数begin(){
var min=parseInt($('#min').val(),10);
var-sec=1;
var时间=分钟+秒;
setInterval(函数(){
如果(时间>0){
--时间;
}
else if(时间==0){
时间=-1;
完成();
}
}, 1000);
函数convertTime(){
var mins=数学下限((最小值%3600)/60);
风险值秒=(秒%60);
//返回时间;
如果(分钟>=0){
var timeTravel=setInterval(函数(){
--秒;
如果(秒==-1&&min>0){secs=59;--mins;}//更改分钟
else如果(secs==0&&min==0){clearInterval(timeTravel);}//在00:00停止
var humanTime=((分钟<10)-“0”:“”)+mins+:“+((秒<10)-“0”:“”)+secs);
$('#timer').html(humanTime).fadeIn(200);
}, 1000);
}else{}
}
转换时间();
$('begin')。衰减切换(200);
$('.selectStyle').fadeToggle(200);
$('.circleSelect').fadeToggle(200);
$('期间')。延迟(200)。衰减切换(400);
}
函数停止(){
}
功能重置时间(间隔){
美元("期间"),衰减切换(200),;
$('begin')。延迟(200)。衰减切换(400);
$('.selectStyle').fadeToggle(200);
var间隔=clearInterval(时间旅行);
重置时间();
}
函数finish(){
$('期间')。淡出(200);
$('圆圈')。渐弱(500);
$(“#finish”).insertAfter(“#circle”).delay(1000)、fadeToggle(400);
}
函数再次(){
$(#finish')。淡出(200);
$('begin')。延迟(200)。衰减切换(200);
$('圆圈')。延迟(200)。衰减切换(400);
$('.selectStyle').fadeToggle(200);
}
问题在于timeTravel
是convertTime
的本地变量,因此timeTravel
内部的resetTime
引用了一个不同的(在本例中,未定义)变量
将其声明移到该函数之外,以便两个函数都可以访问它,并删除这些函数中该变量的var
:
<script>
var timeTravel;
function convertTime() {
// ...
timeTravel = setInterval( /* ... */ );
// ...
}
function resetTime() {
// ...
clearInterval(timeTravel);
// ...
}
</script>
时间旅行;
函数convertTime(){
// ...
时间旅行=设定间隔(/*…*/);
// ...
}
函数resetTime(){
// ...
clearInterval(时间旅行);
// ...
}
您已在convertTime
函数中将timeTravel
变量声明为本地变量,这意味着退出该函数时它将消失
在begin
函数外声明变量,只需将赋值留在convertTime
函数内即可。这样,您就可以使用resetTime
函数中的变量来停止间隔。timeTravel()
应该在全局范围内。
或
var timeTravel = '';
function convertTime() {
if (/* code */){
timeTravel = setInterval( function(/* code */) {
}
}
您需要声明
var timeTravel
global,您只能在convertTime函数的范围内访问它
var timeTravel = '';
function convertTime() {
if (/* code */){
timeTravel = setInterval( function(/* code */) {
}
}