• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

闹钟功能无法正常工作

JavaScript 来源:Daniel Kapin 6次浏览

我有一个非常简单的通过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变量和H变量等于h时,它运行良好,但如果我运行要求的时间前应用,音频从来没有运行。有人能帮我解决这个问题吗?下面是完整的CodePen供参考:

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


===========解决方案如下:

问题是这样的一段代码

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

你重新声明的变量h, m, s这是本地的startTime功能

但是,当您正在比较全局作用域中定义的变量h,m, s,这些变量的值是代码第一次运行时引用的值。

startTime函数中定义的变量排除var

checkforAlarm方法内使用console.log语句,并且您看到它仍然反映旧的时间戳。

Codepen


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)