如何在使用本地存储单击按钮后开始倒计时
How to make countdown start after clicking a button using local storage
if(localStorage.getItem("total_seconds")){
var total_seconds = localStorage.getItem("total_seconds");
}
else {
var total_seconds = 6*10;
}
var minutes = parseInt(total_seconds/60);
var seconds = parseInt(total_seconds%60);
function countDownTimer(){
if(seconds < 10){
seconds= "0"+ seconds ;
}
if(minutes < 10){
minutes= "0"+ minutes ;
}
document.getElementById("quiz-time-left").innerHTML = "Time Left :"+minutes+"minutes"+seconds+"seconds";
if(total_seconds <= 0){
setTimeout("document.quiz.submit()",1);
} else {
total_seconds = total_seconds -1 ;
minutes = parseInt(total_seconds/60);
seconds = parseInt(total_seconds%60);
localStorage.setItem("total_seconds",total_seconds)
setTimeout("countDownTimer()",1000);
}
}
setTimeout("countDownTimer()",1000);
这是我复制的倒计时代码,我希望这个计数器在单击按钮后启动,但我似乎无法成功我找不到一种方法来放置 onclick 工作功能如果可以的话会很好收到一些建议和提示
将最后一行 setTimeout(countDownTimer(),1000);
放在 onclick
事件的函数中;如果您在按钮的 html 中将“onclick”指定为属性,则其值应设置为您放入其中的函数的名称:
<button onclick="startTimer();">start</button>
你的js在哪里
function startTimer (){
setTimeout(countDownTimer,1000);
}
或者,将 setTimeout(countDownTimer,1000);
放入按钮的事件侦听器中:
let buttonElement = document.getElementById(<id attribute of button>);
buttonElement.addEventListener('click', () {setTimeout(countDownTimer,1000)});
此外,去掉 countDownTimer()
周围的引号 - 它是一个函数,而不是字符串。 setTimeout
里面的函数名不要有()
,只有函数名。
最后,setTimeout
将在时间参数之后触发一次。如果您需要它每 1000 毫秒 运行,请改用 setInterval
。
要在用户returns时自动恢复定时器,修改初始if块如下:
if(localStorage.getItem("total_seconds")){
var total_seconds = localStorage.getItem("total_seconds");
// start timer from here as storage was found;
startTimer ();
}
else {
var total_seconds = 6*10;
}
这样,如果在存储中找到一个值,则调用以启动计时器,表示之前的访问。您可能希望包括一些检查值是什么,除非它已经达到零,但您的代码的其余部分可能会处理这个问题。
if(localStorage.getItem("total_seconds")){
var total_seconds = localStorage.getItem("total_seconds");
}
else {
var total_seconds = 6*10;
}
var minutes = parseInt(total_seconds/60);
var seconds = parseInt(total_seconds%60);
function countDownTimer(){
if(seconds < 10){
seconds= "0"+ seconds ;
}
if(minutes < 10){
minutes= "0"+ minutes ;
}
document.getElementById("quiz-time-left").innerHTML = "Time Left :"+minutes+"minutes"+seconds+"seconds";
if(total_seconds <= 0){
setTimeout("document.quiz.submit()",1);
} else {
total_seconds = total_seconds -1 ;
minutes = parseInt(total_seconds/60);
seconds = parseInt(total_seconds%60);
localStorage.setItem("total_seconds",total_seconds)
setTimeout("countDownTimer()",1000);
}
}
setTimeout("countDownTimer()",1000);
这是我复制的倒计时代码,我希望这个计数器在单击按钮后启动,但我似乎无法成功我找不到一种方法来放置 onclick 工作功能如果可以的话会很好收到一些建议和提示
将最后一行 setTimeout(countDownTimer(),1000);
放在 onclick
事件的函数中;如果您在按钮的 html 中将“onclick”指定为属性,则其值应设置为您放入其中的函数的名称:
<button onclick="startTimer();">start</button>
你的js在哪里
function startTimer (){
setTimeout(countDownTimer,1000);
}
或者,将 setTimeout(countDownTimer,1000);
放入按钮的事件侦听器中:
let buttonElement = document.getElementById(<id attribute of button>);
buttonElement.addEventListener('click', () {setTimeout(countDownTimer,1000)});
此外,去掉 countDownTimer()
周围的引号 - 它是一个函数,而不是字符串。 setTimeout
里面的函数名不要有()
,只有函数名。
最后,setTimeout
将在时间参数之后触发一次。如果您需要它每 1000 毫秒 运行,请改用 setInterval
。
要在用户returns时自动恢复定时器,修改初始if块如下:
if(localStorage.getItem("total_seconds")){
var total_seconds = localStorage.getItem("total_seconds");
// start timer from here as storage was found;
startTimer ();
}
else {
var total_seconds = 6*10;
}
这样,如果在存储中找到一个值,则调用以启动计时器,表示之前的访问。您可能希望包括一些检查值是什么,除非它已经达到零,但您的代码的其余部分可能会处理这个问题。