2016-08-10 9 views
0

jQueryとJavascriptで作成された非常に単純なアラームアプリケーションがあります。残念なことに、プログラムのアラーム機能は動作しません。コードの関連する部分はここにある: アラーム機能が正常に動作しません

var today = new Date(); 
var h = today.getHours(); 
var m = today.getMinutes(); 
var s = today.getSeconds(); 

function startTime() { 
    var today = new Date(); 
    var h = today.getHours(); 
    var m = today.getMinutes(); 
    var s = today.getSeconds(); 
    m = checkTime(m); 
    s = checkTime(s); 
    current_Time = h + ":" + m + ":" + s; 
    document.getElementById('txt').innerHTML = 
    current_Time; 
    var t = setTimeout(startTime, 500); 
} 

function checkTime(i) { 
    if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10 
    return i; 
} 

function checkForAlarm() { 
    console.log("h :: " + h); 
    console.log("m :: " + m); 
    console.log("s :: " + s); 
    if (h == 17 && m == 52 && s == 16) { 
     console.log("play") 
     //var audio = new Audio('Prince.mp3'); 
     audio.play(); 
    } 
    else { 
     console.log("not"); 
    } 
} 

window.setInterval(function(){ 
    checkForAlarm() 
}, 1000); 

私は、mとsの変数を削除し、時間変数は、それがうまく動作しますが、私は要求された時間までにアプリケーションを実行する場合、音声が実行されることはありません、時間が等しい場合

。誰かがこれで私を助けることができますか?ここではフルCodePenは、参考値です。

http://codepen.io/kwikimart/pen/grkYoX

+0

'の代わりに' 1000 'の500'を与えて試してみてください、 –

答えて

1

問題は、あなたがstartTime機能

しかし、ときにローカルな変数をh, m, s再宣言されているコード

function startTime() { 
     var today = new Date(); 
     --> var h = today.getHours(); 
     --> var m = today.getMinutes(); 
     --> var s = today.getSeconds(); 

のこの作品ですグローバルスコープで定義されているh,m, s変数と比較しています。この値は、コードが初めて実行されるときに参照されます。

startTime関数の中で定義されている変数には、varを取り除いてください。

checkforAlarmメソッド内のconsole.logステートメントを使用すると、それでも古いタイムスタンプが反映されています。

Codepen

関連する問題