Art*_*hur 0 javascript jquery timer
我有一个倒数计时器,每当我快速按F5时,计时器就会冻结。我猜这是因为页面在setInterval之前重新加载。我正在寻找一种重新加载页面的方法,同时保持计时器运行,正在发生什么情况是在setInterval可能完成之前页面重新加载
<h3 style="color:#000000" align="center">
Time Remaining : <span id='timer'></span>
</h3>
<script type="text/javascript" src="jquery-1.11.3.min.js"></script>
<script>
//define your time in second
var c = localStorage.getItem("timer");
if(c == null)c = 3600;
var t;
timedCount();
function timedCount()
{
var hours = parseInt( c / 3600 ) % 24;
var minutes = parseInt( c / 60 ) % 60;
var seconds = c % 60;
var result = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds);
$('#timer').html(result);
if(c == 0 )
{
//setConfirmUnload(false);
//$("#quiz_form").submit();
window.location="logout.html";
}
c = c - 1;
localStorage.setItem("timer", c);
t = setTimeout(function()
{
timedCount()
},1000);
}
</script>
Run Code Online (Sandbox Code Playgroud)
存储计时器启动时计时器应完成的时间,然后从该值中减去当前时间即可获得计时器应完成的时间。该日期对象可以很好地用于此。
的HTML
<p id="display">Time Left<p>
<button id="start">Start</button>
Run Code Online (Sandbox Code Playgroud)
Java脚本
var start = document.getElementById("start");
var dis = document.getElementById("display");
var finishTime;
var timerLength = 10;
var timeoutID;
dis.innerHTML = "Time Left: " + timerLength;
if(localStorage.getItem('myTime')){
Update();
}
start.onclick = function () {
localStorage.setItem('myTime', ((new Date()).getTime() + timerLength * 1000));
if (timeoutID != undefined) window.clearTimeout(timeoutID);
Update();
}
function Update() {
finishTime = localStorage.getItem('myTime');
var timeLeft = (finishTime - new Date());
dis.innerHTML = "Time Left: " + Math.max(timeLeft/1000,0);
timeoutID = window.setTimeout(Update, 100);
}
Run Code Online (Sandbox Code Playgroud)
在这里查看工作示例:JSFiddle
| 归档时间: |
|
| 查看次数: |
3959 次 |
| 最近记录: |