Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从“H-”开关切换;“小时”;至M-“;会议记录”;在没有刷新的计时器中_Javascript - Fatal编程技术网

Javascript 从“H-”开关切换;“小时”;至M-“;会议记录”;在没有刷新的计时器中

Javascript 从“H-”开关切换;“小时”;至M-“;会议记录”;在没有刷新的计时器中,javascript,Javascript,我制作了这个计时器,它每小时显示H-“剩余小时数”,每分钟显示M-“剩余分钟数”,秒数相同,取决于时间戳值 您是否看到我的脚本中有需要改进的地方,以及如何在不刷新页面的情况下从小时计时器切换到分钟计时器,从分钟计时器切换到秒计时器: window.onload = function() { var actual_timestamp = Math.round((new Date()).getTime() / 1000); var time_remainin

我制作了这个计时器,它每小时显示H-“剩余小时数”,每分钟显示M-“剩余分钟数”,秒数相同,取决于时间戳值

您是否看到我的脚本中有需要改进的地方,以及如何在不刷新页面的情况下从小时计时器切换到分钟计时器,从分钟计时器切换到秒计时器:

    window.onload = function() {

        var actual_timestamp = Math.round((new Date()).getTime() / 1000);
        var time_remaining=<?php echo $vote_time_limit ?> - actual_timestamp; 
        var spanElt = document.getElementById('timer'); 
        var h,m,s;      

    setInterval( function() {

        //If time_remaining is between 24 and 1h, it decreases every hours
        if(time_remaining<=86400 && time_remaining>=3600){ 

            h=Math.floor( time_remaining / 3600 % 24);
            spanElt.innerHTML="H-"+h--;  
            time_remaining--;
        }

    } , 3600000 ); 


    setInterval( function() {

        //If time_remaining is between 1h and 1min, it decreases every minutes
        if(time_remaining<3600 && time_remaining>=60){

            m=Math.floor( time_remaining / 60 % 60); 
            spanElt.innerHTML="M-"+m--;  
            time_remaining--;
            }

    } , 60000 ); 

    setInterval( function() {


        //If it is between 60sec and 0sec, it decreases every seconds
        if(time_remaining<60 && time_remaining>0){ 

                s=Math.floor( time_remaining % 60);
                spanElt.innerHTML="S-"+s--;  
                time_remaining--;

        //If time_remaining =0, it takes the value of the cycle time
        }else if(time_remaining==0){

                time_remaining=86400; //24h
        }

    } , 1000 );         

   }; 
window.onload=function(){
var actual_timestamp=Math.round((new Date()).getTime()/1000);
var time_剩余=-实际_时间戳;
var spanElt=document.getElementById('timer');
var h,m,s;
setInterval(函数(){
//如果剩余时间在24到1小时之间,则每小时减少一次
如果(剩余时间=3600){
h=数学下限(剩余时间/3600%24);
spanElt.innerHTML=“H-”+H-;
剩余时间--;
}
} , 3600000 ); 
setInterval(函数(){
//如果剩余时间_在1到1分钟之间,则每分钟减少一次
如果(剩余时间=60){
m=数学下限(剩余时间/60%60);
spanElt.innerHTML=“M-”+M--;
剩余时间--;
}
} , 60000 ); 
setInterval(函数(){
//如果介于60秒和0秒之间,则每秒钟减小一次
如果(剩余时间0){
s=数学下限(剩余时间%60);
spanElt.innerHTML=“S-”+S--;
剩余时间--;
//如果剩余时间_=0,则取循环时间的值
}else if(剩余时间==0){
剩余时间=86400;//24小时
}
} , 1000 );         
}; 

您只需要一个计时器,然后将时钟设置为适当的值

setInterval在所需的时间间隔后尽快运行-如果系统繁忙,它将运行得稍晚并缓慢漂移。最好使用setTimeout估计到下一个历元的时间,并在下一个完整间隔后20毫秒左右再次运行它。

我认为我的脚本很糟糕(一个setInterval就足够了),感谢您的帮助。