2017-01-25 11 views
0

私はDate()オブジェクトを使用してアラームを作ります。私は目覚まし時計を作ろうとしています。日付オブジェクトからの時間がユーザーが設定した時間に達したときに実行する関数を使用したいJavaScriptの時間ベースのポーリング

ユーザーは特定の時刻を選択してアラームを設定します。私が立ち往生しているところでは、ユーザーが選択した時間がシステム時間に等しくなるまでポーリングしたいということです。私はsetTimeout()を使用してみましたが、私は私のアラーム時刻を取得していますどこRangeError: Maximum call stack size exceeded

function showTime(){ 
      var e = document.getElementById("hourSelect"); 
      var hour = e.options[e.selectedIndex].value; 
      var e1 = document.getElementById("autoDropDown"); 
      var minuteSelected = e1.options[e1.selectedIndex].value; 
      var e2 = document.getElementById("amPmSelect"); 
      var AMPM = e2.options[e2.selectedIndex].value; 
      } 

を取得するようです。だから私は、この時間は私がDate()オブジェクトを使用して得られたシステム時間を(等しいかどうかを確認するために使うのですか

var today = new Date(); 
     var hours = today.getHours(); 
     var m = today.getMinutes(); 
     var s = today.getSeconds(); 
     var suffix = (hours >= 12)? 'pm' : 'am'; //converting military time to non-military time. 
     hours = (hours > 12)? hours -12 : hours; 
     hours = (hours == '00')? 12 : hours; 
     m = checkTime(m); 
     s = checkTime(s); 

PS何:私は、データの不一致の世話をした数に時間を変換しても、すべてを変換します。代わりに軍事時間の通常の時間。

+0

あなたが私たちを見せてくれますか?あなたは 'setTimeout'関数をどこで実行しますか? – Trucy

+0

' \t \t \t ' – CoderSenju

答えて

0
var alarm = new Date(2017,00,25,14,9,01); 

var checktime = function(){ 
var date = new Date(); 
if(alarm.getHours() === date.getHours()){ 
    if(alarm.getMinutes() === date.getMinutes()){ 
      if(alarm.getMinutes() === date.getMinutes()){ 
       console.log('trigger'); 
       return true; 
      } 
    } 
    return false; 
}; 
}; 

var interval = setInterval(function(){ 
    if(checktime()){ 
     clearInterval(interval); 
     console.log('cleared'); 
    }; 
},100); 

あなたはのsetIntervalを使用すると、時間はあなたがアラーム時刻を選択した後。回のmatchした後、あなたはあなたの関数をトリガすることができます一致するかどうかを確認するためにチェックしておくことができます。また、後にそれをてclearIntervalを持っていますトリガー。

関連する問題