Логика будильника не работает в ванильном 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;

Я не уверен, что это именно то, что вы указали для элемента. Я предполагаю, что вы имели в виду "второй", а не "второй"

В противном случае я не вижу проблем с вашим кодом и все должно работать нормально.

Другие вопросы по тегам