我正在开发rails,并编写了用于显示从00:00:00开始的计时器的javascript代码。
[注意:我有两个按钮启动和停止,用于启动定时器和停止定时器]
函数timer(){var秒、分钟、小时;秒=0;最小值=0;hrs=0;秒++;如果(秒>=60){最小++;秒=0;}如果(最小>=60){小时++;最小值=0;}document.getElementById("hrs").innerHTML=小时;document.getElementById("min").innerHTML=min;document.getElementById("sec").innerHTML=秒;setTimeout(timer(),1000);}
现在,这在我的rails web应用程序中运行良好。但是,如果我重定向到另一个页面并返回到此页面,我将丢失计时器值。
在这里,我希望时钟在页面重定向后也能持续运行。
如何解决此问题?
获取时间戳。。。将其保存在某个位置,并将其作为变量传递给下一页
var start=new Date().getTime();
获取经过的时间
var currentMillisecondsPassed=new Date().getTime()-start;
将其转换为hh:mm:ss.msec
或其他。。。
下一页只需要start
值,有很多方法可以传递它。。php、js、get、post。。。。还有更多。
CCD_ 3对于定时器来说也是不精确的。
下面是一个使用querystring传递值的示例。。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>timer</title>
<script>
window.onload=function(){
var pt=window.location.search.split('=')[1],
e=document.body.childNodes,
t=e[0],
s=(pt*1||0),
interval,
ms2Time=function(a) {
var ms=parseInt((a%1000)/100),
s=parseInt((a/1000)%60),
m=parseInt((a/(1000*60))%60),
h=parseInt((a/(1000*60*60))%24);
return (h<10?'0'+h:h)+':'+(m<10?'0'+m:m)+':'+(s<10?'0'+s:s)+'.'+ms;
},
Start=function(){
s=new Date().getTime();
interval=window.setInterval(getcurrent,100);
},
Stop=function(){
window.clearInterval(interval);
s=0;
},
getcurrent=function(){
t.textContent=ms2Time(new Date().getTime()-s);
},
changepage=function(){
window.location='?start='+s;
};
e[1].addEventListener('click',Start,false);
e[2].addEventListener('click',Stop,false);
e[3].addEventListener('click',changepage,false);
if(pt&&pt!=0){
interval=window.setInterval(getcurrent,100);
}
}
</script>
</head>
<body><div id="timer"></div><button>start</button><button>stop</button><button>anotherpage</button></body>
</html>
正如我所说。。。您可以将起始值存储在任何位置。。。所以如果你有任何偏好。。。只要告诉我,我就可以更改u.的代码
因为您正在重定向,所以java脚本计时器不起作用。您应该使用系统时间。从页面重定向时,您可以从会话变量中获得一些帮助,以保存计时器启动时的时间戳。
您可以使用会话或cookie设置变量sec, min, hour
的初始值。并将此文件包含在您希望计时器在后台运行的所有页面中。
function timer(){
sec++;
if(sec>=60){
min++;
sec=0;
}
if(min>=60){
hrs++;
min=0;
}
setTimeout(timer(), 1000);
}
并且只在显示计时器的页面中将值添加到DOM中。
尝试从服务器发送默认的sec、min和hrs值,例如将它们保存在cookie中。