倒数计时器在刷新时再次重新加载
countdown timer reloading again on refreshing
javascript 中的倒数计时器代码。但是当页面刷新时它又重新启动了。我希望计时器即使重新启动也应该继续。
帮助我解决这个问题,因为我是初学者,这是我的第一个应用程序,我需要您提供一些详细信息。
`
<body>
<div id="divCounter"></div>
<script type="text/javascript">
var hoursleft = 0;
var minutesleft = 35; // you can change these values to any value greater than 0
var secondsleft = 0;
var finishedtext = "Countdown finished!" // text that appears when the countdown reaches 0
var end = new Date();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);
if(localStorage.getItem("counter")){
var value = localStorage.getItem("counter");
}else{
var value = 0;
}
var counter = function (){
var now = new Date();
var diff = end - now;
diff = new Date(diff);
var sec = diff.getSeconds();
var min = diff.getMinutes();
if (min < 10){
min = "0" + min;
}
if (sec < 10){
sec = "0" + sec;
}
if(now >= end){
clearTimeout(timerID);
document.getElementById('divCounter').innerHTML = finishedtext;
}
else{
var value = min + ":" + sec;
//document.getElementById('divCounter').innerHTML = min + ":" + sec;
localStorage.setItem("counter", JSON.stringify(value));
}
// timerID = setTimeout("cd()", 1000);
// value = JSON.parse(localStorage.getItem("counter"));
//$('#divCounter').append(value);
document.getElementById('divCounter').innerHTML = value;
}
var interval = setInterval(function (){counter();}, 1000);
</script>
</body>
`
您需要将计时器值存储在 cookie 中,
刷新后,检查是否设置了cookie,如果是,则获取值并将其设置为您的计时器的初始时间,
否则从 0
开始
你在这里要做的是设置倒计时的日期/时间并获取当前用户的日期/时间,然后计算倒计时的差值。
类似以下内容将帮助您朝着正确的方向前进:
var date = new Date(Date.UTC(2015, 5, 28, 12, 0, 0));
var now = new Date();
var diff = date.getTime()/1000 - now.getTime()/1000;
虽然您正在从本地存储中读取值变量,但您实际上并没有将结束时间和现在时间设置为它们的旧值,因此它们正在被重置,同时也重置了值变量。您还应该将这些值存储在内存中,并在刷新页面时加载它们。
这是完成的、功能齐全的优化代码。现在应该可以使用了!
<body>
<div id="divCounter"></div>
<script>
var hoursleft = 0;
var minutesleft = 35;
var secondsleft = 0;
var finishedtext = "Countdown finished!";
var end;
if(localStorage.getItem("end")) {
end = new Date(localStorage.getItem("end"));
} else {
end = new Date();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);
}
var counter = function () {
var now = new Date();
var diff = end - now;
diff = new Date(diff);
var sec = diff.getSeconds();
var min = diff.getMinutes();
if (min < 10) {
min = "0" + min;
}
if (sec < 10) {
sec = "0" + sec;
}
if(now >= end) {
clearTimeout(interval);
localStorage.setItem("end", null)
document.getElementById('divCounter').innerHTML = finishedtext;
} else {
var value = min + ":" + sec;
localStorage.setItem("end", end);
document.getElementById('divCounter').innerHTML = value;
}
}
var interval = setInterval(counter, 1000);
</script>
</body>
任何时间的倒数计时器。当您刷新页面时它不会重新启动。
<body>
<div id="divCounter"></div>
<script>
//var hoursleft = 0;
var minutesleft = 0; //give minutes you wish
var secondsleft = 30; // give seconds you wish
var finishedtext = "Countdown finished!";
var end1;
if(localStorage.getItem("end1")) {
end1 = new Date(localStorage.getItem("end1"));
} else {
end1 = new Date();
end1.setMinutes(end1.getMinutes()+minutesleft);
end1.setSeconds(end1.getSeconds()+secondsleft);
}
var counter = function () {
var now = new Date();
var diff = end1 - now;
diff = new Date(diff);
var milliseconds = parseInt((diff%1000)/100)
var sec = parseInt((diff/1000)%60)
var mins = parseInt((diff/(1000*60))%60)
//var hours = parseInt((diff/(1000*60*60))%24);
if (mins < 10) {
mins = "0" + mins;
}
if (sec < 10) {
sec = "0" + sec;
}
if(now >= end1) {
clearTimeout(interval);
// localStorage.setItem("end", null);
localStorage.removeItem("end1");
localStorage.clear();
document.getElementById('divCounter').innerHTML = finishedtext;
if(confirm("TIME UP!"))
window.location.href= "timeup.php";
} else {
var value = mins + ":" + sec;
localStorage.setItem("end1", end1);
document.getElementById('divCounter').innerHTML = value;
}
}
var interval = setInterval(counter, 1000);
</script>
</body>
javascript 中的倒数计时器代码。但是当页面刷新时它又重新启动了。我希望计时器即使重新启动也应该继续。
帮助我解决这个问题,因为我是初学者,这是我的第一个应用程序,我需要您提供一些详细信息。
`
<body>
<div id="divCounter"></div>
<script type="text/javascript">
var hoursleft = 0;
var minutesleft = 35; // you can change these values to any value greater than 0
var secondsleft = 0;
var finishedtext = "Countdown finished!" // text that appears when the countdown reaches 0
var end = new Date();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);
if(localStorage.getItem("counter")){
var value = localStorage.getItem("counter");
}else{
var value = 0;
}
var counter = function (){
var now = new Date();
var diff = end - now;
diff = new Date(diff);
var sec = diff.getSeconds();
var min = diff.getMinutes();
if (min < 10){
min = "0" + min;
}
if (sec < 10){
sec = "0" + sec;
}
if(now >= end){
clearTimeout(timerID);
document.getElementById('divCounter').innerHTML = finishedtext;
}
else{
var value = min + ":" + sec;
//document.getElementById('divCounter').innerHTML = min + ":" + sec;
localStorage.setItem("counter", JSON.stringify(value));
}
// timerID = setTimeout("cd()", 1000);
// value = JSON.parse(localStorage.getItem("counter"));
//$('#divCounter').append(value);
document.getElementById('divCounter').innerHTML = value;
}
var interval = setInterval(function (){counter();}, 1000);
</script>
</body>
`
您需要将计时器值存储在 cookie 中,
刷新后,检查是否设置了cookie,如果是,则获取值并将其设置为您的计时器的初始时间, 否则从 0
开始你在这里要做的是设置倒计时的日期/时间并获取当前用户的日期/时间,然后计算倒计时的差值。
类似以下内容将帮助您朝着正确的方向前进:
var date = new Date(Date.UTC(2015, 5, 28, 12, 0, 0));
var now = new Date();
var diff = date.getTime()/1000 - now.getTime()/1000;
虽然您正在从本地存储中读取值变量,但您实际上并没有将结束时间和现在时间设置为它们的旧值,因此它们正在被重置,同时也重置了值变量。您还应该将这些值存储在内存中,并在刷新页面时加载它们。
这是完成的、功能齐全的优化代码。现在应该可以使用了!
<body>
<div id="divCounter"></div>
<script>
var hoursleft = 0;
var minutesleft = 35;
var secondsleft = 0;
var finishedtext = "Countdown finished!";
var end;
if(localStorage.getItem("end")) {
end = new Date(localStorage.getItem("end"));
} else {
end = new Date();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);
}
var counter = function () {
var now = new Date();
var diff = end - now;
diff = new Date(diff);
var sec = diff.getSeconds();
var min = diff.getMinutes();
if (min < 10) {
min = "0" + min;
}
if (sec < 10) {
sec = "0" + sec;
}
if(now >= end) {
clearTimeout(interval);
localStorage.setItem("end", null)
document.getElementById('divCounter').innerHTML = finishedtext;
} else {
var value = min + ":" + sec;
localStorage.setItem("end", end);
document.getElementById('divCounter').innerHTML = value;
}
}
var interval = setInterval(counter, 1000);
</script>
</body>
任何时间的倒数计时器。当您刷新页面时它不会重新启动。
<body>
<div id="divCounter"></div>
<script>
//var hoursleft = 0;
var minutesleft = 0; //give minutes you wish
var secondsleft = 30; // give seconds you wish
var finishedtext = "Countdown finished!";
var end1;
if(localStorage.getItem("end1")) {
end1 = new Date(localStorage.getItem("end1"));
} else {
end1 = new Date();
end1.setMinutes(end1.getMinutes()+minutesleft);
end1.setSeconds(end1.getSeconds()+secondsleft);
}
var counter = function () {
var now = new Date();
var diff = end1 - now;
diff = new Date(diff);
var milliseconds = parseInt((diff%1000)/100)
var sec = parseInt((diff/1000)%60)
var mins = parseInt((diff/(1000*60))%60)
//var hours = parseInt((diff/(1000*60*60))%24);
if (mins < 10) {
mins = "0" + mins;
}
if (sec < 10) {
sec = "0" + sec;
}
if(now >= end1) {
clearTimeout(interval);
// localStorage.setItem("end", null);
localStorage.removeItem("end1");
localStorage.clear();
document.getElementById('divCounter').innerHTML = finishedtext;
if(confirm("TIME UP!"))
window.location.href= "timeup.php";
} else {
var value = mins + ":" + sec;
localStorage.setItem("end1", end1);
document.getElementById('divCounter').innerHTML = value;
}
}
var interval = setInterval(counter, 1000);
</script>
</body>