更新div内的计时器。 JavaScript的

时间:2016-10-18 23:00:39

标签: javascript html

我写了一个计时器。初始分钟和小时取自用户。然后它应该倒计时。但是,我不知道如何将其转换为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--;
    }
}

3 个答案:

答案 0 :(得分:2)

就像我在你的另一篇中所说,类似的问题:don't make intervals or timeouts in loops

  1. 您通过添加while来引入更多复杂性。你不需要它。
  2. 在循环中制作间隔通常不是正确的想法,因为你可能会产生几个间隔,这些间隔都会同时做同样的事情。
  3. 
    
    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;
    &#13;
    &#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)

我会这样做;

&#13;
&#13;
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;
&#13;
&#13;

为了演示目的,它会在20秒后停止。