gpt4 book ai didi

javascript - 报警功能无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 09:54:09 24 4
gpt4 key购买 nike

我有一个通过 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 语句,您会看到它仍然反射(reflect)旧的时间戳。

Codepen

关于javascript - 报警功能无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38862586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com