Логика будильника не работает в ванильном JavaScript
Я не могу создать правильную логику для простого будильника ванильного javascript, который показывает сообщение / воспроизводит звук в то время, которое пользователь установил... помогите мне сделать логику правильной.
Вот мой код javascript:
<script>
function setAlarm(){
//taking value of time
var a=document.getElementById("H").value;
var b=a*3600000;//converted to millisecound
var c=document.getElementById("M").value;
var d=c*60000;//converted to millisecound
var e=d+b;//addition of millisecound
//live values of time
var f=h*3600000;//converted to millisecound
var g=m*60000;//converted to millisecound
var i=g+h;//addition of millisecound
var j=0;
if(i>=e){
j=i-e;
}else{
j=e-i;
}//else
document.getElementById("demo2").innerHTML=j;
setInterval(test,j);
if (d==g){
console.log("if called");
test();
}//if
}
function test(){
console.log("test called")
document.getElementById("demo2").innerHTML="its work";
}
var d=new Date();
var h=d.getHours();
document.getElementById("hours").innerHTML=h;
var m=d.getMinutes();
document.getElementById("minutes").innerHTML=m;
var s=d.getSeconds();
document.getElementById("secound").innerHTML=s;
setInterval(repeat,1000);
function repeat(){
var d=new Date();
var h=d.getHours();
document.getElementById("hours").innerHTML=h;
var m=d.getMinutes();
document.getElementById("minutes").innerHTML=m;
var s=d.getSeconds();
document.getElementById("secound").innerHTML=s;
}
var i=0;
function ChangeTheam(){
i++;
if(i%2){
document.body.style.backgroundColor= "black";
document.getElementById("hours").innerHTML.style.color = "blue";
}else{
document.body.style.backgroundColor= "white";
}//else
}//change theam function
</script>
Я могу предоставить HTML-код, если кто-то захочет, но не думаю, что это будет необходимо, так как я не могу правильно сформулировать логику с первого момента.
Спасибо:)
1 ответ
В вашем коде
//live values of time
var f=h*3600000;//converted to millisecound
var g=m*60000;//converted to millisecound
var i=g+h;//addition of millisecound`
Вы добавили g+h
вместо того g+f
в результате время, необходимое для срабатывания будильника, может быть значительно короче.
var s=d.getSeconds();
document.getElementById("secound").innerHTML=s;
Я не уверен, что это именно то, что вы указали для элемента. Я предполагаю, что вы имели в виду "второй", а не "второй"
В противном случае я не вижу проблем с вашим кодом и все должно работать нормально.