javascript倒计时回荡错误的时间

javascript倒计时回荡错误的时间,javascript,html,countdown,Javascript,Html,Countdown,我希望我的javascript代码能够在倒计时3小时后读取,并在倒计时完成后重定向到新页面 <script type="text/javascript"> // properties var count = 0; var counter = null; window.onload = function() { initCounter(); }; function initCounter() { // get count from localStorage, or set to i

我希望我的javascript代码能够在倒计时3小时后读取,并在倒计时完成后重定向到新页面

<script type="text/javascript">
// properties
var count = 0;
var counter = null;

window.onload = function() {
initCounter();
};

function initCounter() {
// get count from localStorage, or set to initial value of 1000
count = getLocalStorage('count') || 1000;
counter = setInterval(timer, 1000); //1000 will  run it every 1 second
}

function setLocalStorage(key, val) {
if (window.localStorage) {
  window.localStorage.setItem(key, val);
}

return val;
}

function getLocalStorage(key) {
return window.localStorage ? window.localStorage.getItem(key) : '';
}

function timer() {
count = setLocalStorage('count', count - 1);
if (count == -1) {
  clearInterval(counter);
  return;
}

var seconds = count % 60;
var minutes = Math.floor(count / 60);
var hours = Math.floor(minutes / 60);
minutes %= 60;
hours %= 60;

document.getElementById("timer").innerHTML = hours +  "hours "  + minutes  +  "minutes and "   + seconds +  "  seconds left to complete this   transaction"; // watch for spelling
 }
</script>
<div id="timer"></div>

//性质
var计数=0;
var计数器=null;
window.onload=函数(){
initCounter();
};
函数initCounter(){
//从localStorage获取计数,或设置为初始值1000
count=getLocalStorage('count')| | 1000;
计数器=设置间隔(计时器,1000);//1000将每1秒运行一次
}
函数setLocalStorage(键,val){
if(window.localStorage){
window.localStorage.setItem(key,val);
}
返回val;
}
函数getLocalStorage(键){
return window.localStorage?window.localStorage.getItem(键):“”;
}
函数计时器(){
count=setLocalStorage('count',count-1);
如果(计数==-1){
清除间隔(计数器);
返回;
}
var秒数=计数%60;
var分钟=数学地板(计数/60);
var小时=数学楼层(分钟/60);
分钟%=60;
小时%=60;
document.getElementById(“timer”).innerHTML=hours+“hours”+minutes+“minutes”和“+seconds+”完成此事务剩下的秒数”;//注意拼写
}

请帮助我让它能够倒计时到三个小时,并在倒计时完成后重定向到另一页,以使其更好。

您没有正确设置总时间。您将其设置为16分钟,而不是3小时。以下是工作代码(请试用):

<script type="text/javascript">
// properties
var count = 0;
var counter = null;

window.onload = function() {
initCounter();
};

function initCounter() {
// get count from localStorage, or set to initial value of 1000
count = getLocalStorage('count') || 1000;
counter = setInterval(timer, 1000); //1000 will  run it every 1 second
}

function setLocalStorage(key, val) {
if (window.localStorage) {
  window.localStorage.setItem(key, val);
}

return val;
}

function getLocalStorage(key) {
return window.localStorage ? window.localStorage.getItem(key) : '';
}

function timer() {
count = setLocalStorage('count', count - 1);
if (count == -1) {
  clearInterval(counter);
  return;
}

var seconds = count % 60;
var minutes = Math.floor(count / 60);
var hours = Math.floor(minutes / 60);
minutes %= 60;
hours %= 60;

document.getElementById("timer").innerHTML = hours +  "hours "  + minutes  +  "minutes and "   + seconds +  "  seconds left to complete this   transaction"; // watch for spelling
 }
</script>
<div id="timer"></div>

另外,不要使用
setInterval
setTimeout
进行精确计时。这些函数是不稳定的。请改用
Date.now()

我只想让你帮我检查一下,在不更改代码的情况下,我可以在什么地方工作三个小时。@phemieny7
count=getLocalStorage('count')|3600*3
而不是
count=getLocalStorage('count')|1000
。但是我强烈建议你不要在这种情况下使用
setInterval
setTimeout
函数。是的,我喜欢你的代码,但我遇到的问题是,当页面刷新时,它会重新启动。如果你能纠正这一点,我真的很乐意使用它。请帮我纠正一下。谢谢。@Phemeny7。当然,它会重新启动,因为JavaScript是客户端语言。页面刷新后继续计数的唯一方法是使用cookies。我相信,如果你阅读维基,你一定能找到一种方法来做到这一点。@phemieny7。如果你觉得我的答案有用,请考虑接受和接受。谢谢