闹钟功能无法正常工作
我有一个非常简单的通过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
以上是 闹钟功能无法正常工作 的全部内容, 来源链接: utcz.com/qa/259560.html