2012-02-21 78 views
0

我想使用的setInterval和clearInterval在字面上可能最简单的情况:的JavaScript的setInterval和clearInterval不工作

var passiveInterval = ""; 
var activeInterval = ""; 

function myStartFunction() 
{ 
    ... 
    passiveInterval = window.setInterval(passiveCheck, pIntAmt); 
    activeInterval = window.setInterval(activeCheck, aIntAmt); 
    ... 
} 

function myEndFunction() 
{ 
    ... 
    if (passiveInterval != "") 
    { 
     alert("passiveInterval: " + passiveInterval); 
     window.clearInterval(passiveItnerval); 
     passiveInterval = ""; 
    } 
    if (activeInterval != "") 
    { 
     window.clearInterval(activeInterval); 
     activeInterval = ""; 
    } 
    ... 
} 

令人难以置信的是,报警触发,并给我的时间间隔的正确值(整数),但随后调用clearInterval声明触发:

的ReferenceError:找不到变量:passiveItnerval

我曾试图与窗口的每一个排列,这耳光的一切,b前ut没有什么作品...

+0

什么是'passiveCheck'以及何时'myEndFunction'被调用? – 2012-02-21 02:17:59

+0

'setTimeout'和'setInterval'返回一个+ ve整数,因此可能最好写下:'if(passiveInterval){/ * clear timout * /}'而不是与*空字符串*进行比较。 – RobG 2012-02-21 02:27:06

+0

@RobG这是个好主意,谢谢。此外,有没有什么办法让自己感觉更像是一种工具,而不是在这里发布错字? >< – 2012-02-21 02:30:24

回答

2

Typo。 “passiveItnerval”的crtl + f ...“t”和“n”是相反的。

另外,如果可能的话,请考虑使用setTimeout而不是setIntervalsetInterval会变得毛茸茸的。

+0

用'setTimeout'而不是'setInterval'做循环定时器的最好方法是什么? – 2012-02-21 02:22:03

+0

@MaxwellCollard在第一次超时触发的函数末尾设置另一个超时值,不要设置另一个超时值而不是使用clearInterval。 – 2012-02-21 02:23:29

+0

通过删除这些与错字相关的问题,我们可以真正使用您的帮助![活动清理堆栈溢出](http://meta.stackexchange.com/q/167342/187073)!你可以通过在这个问题上进行近距离投票来介入一点吗? – VisioN 2013-02-28 18:40:45

0

你有一个错字

passiveItnerval = passiveInterval

+0

哦上帝有人请拍我,我花了三个小时浏览我的整个代码库来解决这个问题......好的,下一个问题,JS的最佳IDE是什么?原因Dreamweaver显然死亡。 – 2012-02-21 02:20:12

+2

如果你是窗户,给记事本++一个镜头。我使用Komodo编辑6 – GoldenNewby 2012-02-21 02:21:04

+0

或去NetBeans,跨平台兼容。 – mauris 2012-02-21 02:22:27

0

我对此有一个简单的功能,你可以一遍又一遍用它!

var timer = function(t,i,d,f,fend,b) 
{ 
    if(!f) 
    { return; } 
    if(t == -1 || t > 0) 
    { setTimeout(function() { b=(f())?1:0; timer((b)?0:(t>0)?--t:t, i+((d)?d:0), d, f, fend,b); }, (b||i<0)?0.1:i); } 
    else if(typeof fend == 'function') 
     { setTimeout(fend, 1); } 
}; 

parameters: 
t = times/repeat count (-1 is endless) 
i = interval wait period in milliseconds 
d = Interval increase or decrease after each interval 
f = function to call after interval 
fend = function to call when t ended 

注:当功能f()返回true循环可以停止,即使当它是无尽的

非常简单易用:

timer(4,1000,0,function(){alert('called');},function(){alert('Thank you - finished');}); 

想象一下,你可以用它做什么,这是无止境的;-)

格尔茨和欢呼声, 欧文Haantjes

相关问题