2015-02-08 47 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); 

反正好運來你:)