我写了一个计时器。初始分钟和小时取自用户。然后它应该倒计时。但是,我不知道如何将其转换为div中的倒计时。此时操作发生在提示框中。我不想要这个。
function timer() {
var mins = 1;
var secs = 10;
while (mins >= 0) {
for(var i = secs; i > 0; i--) {
setInterval(alert(mins + ":" + i),1000);
}
secs = 59;
mins--;
}
}
答案 0 :(得分:2)
就像我在你的另一篇中所说,类似的问题:don't make intervals or timeouts in loops。
while
来引入更多复杂性。你不需要它。
var el = document.getElementById("timer"),
mins = 2,
secs = 0;
function countDown() {
if (secs || mins) {
setTimeout(countDown, 100); // Should be 1000, but I'm impatient
}
el.innerHTML = mins + ":" + (secs.toString().length < 2 ? "0" + secs : secs); // Pad number
secs -= 1;
if (secs < 0) {
mins -= 1;
secs = 59;
}
}
countDown();
&#13;
<div id="timer"></div>
&#13;
答案 1 :(得分:1)
请通过“运行代码段”进行检查,并确认这是您正在尝试的内容,
var seconds = 60;
function timer() {
document.getElementById('time').innerHTML = 'Seconds : ' + (seconds--).toString();
if(seconds >= 0) {
setTimeout(timer, 1000);
}
}
timer();
<div id="time"></div>
答案 2 :(得分:0)
我会这样做;
var insertZero = n => n < 10 ? "0"+n : ""+n,
printTime = n => time.textContent = insertZero(~~(n/3600)%3600)+":"+insertZero(~~(n/60)%60)+":"+insertZero(n%60),
countDownFrom = n => (printTime(n), setTimeout(_ => n ? sid = countDownFrom(--n)
: console.log("ignition:",n), 1000)),
sid;
countDownFrom(3610);
setTimeout(_ => clearTimeout(sid),20005);
&#13;
<div id="time"></div>
&#13;
为了演示目的,它会在20秒后停止。