2015-02-08 64 views
0

我遇到问题的块如下:setTimeout()/ setInterval()将不会执行。 **我传递函数对象 - 不执行功能

setInterval(checkInput, 5000); 

其中

var checkInput = function (letter) { 
    console.log("This executed") 
    if (ncorrect > 25) 
     clearInterval(); 
    if (document.getElementById('keyinput').value === letter) 
     ncorrect++; 
    else 
     ncorrect = 0; 
} 

我看了SO职位,其中问题是传递的函数看起来像setTimeout(function(), 500),问题是(),但我显然没有这样做。

调试时,似乎函数永远不会实际执行,并且setTimeout()/ setInterval()不会等待给定的时间量。我没有收到任何错误或警告。任何见解都会被赞赏。谢谢!

+0

尝试的setInterval( 'checkInput',5000); – 2015-02-08 04:41:49

回答

1

它为我所有的作品,唯一的错误,我得到的是: - ncorrect未定义 - 我没有我的网页上document.getElementById('keyinput');)

其余的应该罚款。你有ncorrect#keyinput定义

+0

是! '#keyinput'是''和'ncorrect'正好在开头'var ncorrect = 0;'' – Charles 2015-02-08 04:40:51

1

您的代码正在为我工​​作。但我注意到其中的一些其他错误:

首先是您的代码将无法清除间隔。你必须通过clearInterval参数,像这样:

var checkInput = function (letter) { 
    console.log("This executed") 
    if (ncorrect > 25) 
     clearInterval(interval); 
    if (document.getElementById('keyinput').value === letter) 
     ncorrect++; 
    else 
     ncorrect = 0; 
} 

var interval = setInterval(checkInput, 5000); 

第二个是你的checkInput函数接受letter的参数。就目前而言,你并没有传递任何东西给函数。要做到这一点,你就必须这样做:

var interval = setInterval(function(){ 
    var letter = 'a' //whatever value you want to pass 
    checkInput(letter); 
}, 5000); 

反正好运来你:)