简体   繁体   English

向倒数计时器添加开始按钮

[英]Add start button to countdown timer

I added a start button to my countdown timer but It doesn't work. 我在倒数计时器中添加了开始按钮,但此按钮不起作用。 When I run it, it says that start is not defined. 当我运行它时,它说启动未定义。 I inspected the code, and my console is printing out the following error: "Uncaught ReferenceError: start is not defined at HTMLButtonElement.onclick". 我检查了代码,然后控制台打印出以下错误:“未捕获的ReferenceError:在HTMLButtonElement.onclick上未定义开始”。 In my code above, I added the start function that will start my countdown timer. 在上面的代码中,我添加了启动功能,它将启动我的倒数计时器。 Could you tell me what I am missing? 你能告诉我我在想什么吗? I look at other examples and I am still not able to make it work. 我看了其他示例,但仍然无法使它起作用。

  function getTimeRemaining(endtime) { var t = Date.parse(endtime) - Date.parse(new Date()); var seconds = Math.floor((t / 1000) % 60); var minutes = Math.floor((t / 1000 / 60) % 60); var hours = Math.floor((t / (1000 * 60 * 60)) % 24); var days = Math.floor(t / (1000 * 60 * 60 * 24)); return { 'total': t, 'days': days, 'hours': hours, 'minutes': minutes, 'seconds': seconds }; } function initializeClock(id, endtime) { var clock = document.getElementById(id); var daysSpan = clock.querySelector('.days'); var hoursSpan = clock.querySelector('.hours'); var minutesSpan = clock.querySelector('.minutes'); var secondsSpan = clock.querySelector('.seconds'); function updateClock() { var t = getTimeRemaining(endtime); daysSpan.innerHTML = t.days; hoursSpan.innerHTML = ('0' + t.hours).slice(-2); minutesSpan.innerHTML = ('0' + t.minutes).slice(-2); secondsSpan.innerHTML = ('0' + t.seconds).slice(-2); if (t.total <= 0) { clearInterval(timeinterval); } } updateClock(); function start(){ var timeinterval = setInterval(updateClock, 1000); } } var deadline = new Date("Jan 5, 2021 15:37:25"); //var deadline = new Date($scope.data.deadLine); //new Date(Date.parse(new Date()) + 15 * 24 * 60 * 60 * 1000); initializeClock('clockdiv', deadline); 
 body{ text-align: center; background: #00ECB9; font-family: sans-serif; font-weight: 100; } h1{ color: #396; font-weight: 100; font-size: 40px; margin: 40px 0px 20px; } #clockdiv{ font-family: sans-serif; color: #fff; display: inline-block; font-weight: 100; text-align: center; font-size: 30px; } #clockdiv > div{ padding: 10px; border-radius: 3px; background: #00BF96; display: inline-block; } #clockdiv div > span{ padding: 15px; border-radius: 3px; background: #00816A; display: inline-block; } .smalltext{ padding-top: 5px; font-size: 16px; } 
 <div> <h1>Countdown Clock</h1> <div id="clockdiv"> <div> <span class="days"></span> <div class="smalltext">Days</div> </div> <div> <span class="hours"></span> <div class="smalltext">Hours</div> </div> <div> <span class="minutes"></span> <div class="smalltext">Minutes</div> </div> <div> <span class="seconds"></span> <div class="smalltext">Seconds</div> </div> </div> </div> <button type="button" onclick="start()">Start</button> <button type="button" onclick="stop()">Stop</button> 

you have use start function inside initializeClock function if you want to continue with same code, you have to change some minor change in your code as following below. 如果要继续使用相同的代码,则必须在initializeClock函数内部使用start函数,您必须在代码中进行一些细微更改,如下所示。

<div>
 <h1>Countdown Clock</h1>
 <div id="clockdiv">
   <div>
      <span class="days"></span>
      <div class="smalltext">Days</div>
   </div>
   <div>
      <span class="hours"></span>
      <div class="smalltext">Hours</div>
   </div>
   <div>
      <span class="minutes"></span>
      <div class="smalltext">Minutes</div>
   </div>
<div>
  <span class="seconds"></span>
  <div class="smalltext">Seconds</div>
</div>

Start Stop 开始停止

function getTimeRemaining(endtime) {
    var t = Date.parse(endtime) - Date.parse(new Date());
    var seconds = Math.floor((t / 1000) % 60);
    var minutes = Math.floor((t / 1000 / 60) % 60);
    var hours = Math.floor((t / (1000 * 60 * 60)) % 24);
    var days = Math.floor(t / (1000 * 60 * 60 * 24));
    return {
        'total': t,
        'days': days,
        'hours': hours,
        'minutes': minutes,
        'seconds': seconds
    };
}

function initializeClock(id, endtime) {
  var timeinterval;
    var clock = document.getElementById(id);
    var daysSpan = clock.querySelector('.days');
    var hoursSpan = clock.querySelector('.hours');
    var minutesSpan = clock.querySelector('.minutes');
    var secondsSpan = clock.querySelector('.seconds');

    function updateClock() {
        var t = getTimeRemaining(endtime);

        daysSpan.innerHTML = t.days;
        hoursSpan.innerHTML = ('0' + t.hours).slice(-2);
        minutesSpan.innerHTML = ('0' + t.minutes).slice(-2);
        secondsSpan.innerHTML = ('0' + t.seconds).slice(-2);

        if (t.total <= 0) {
            clearInterval(timeinterval);
        }
    }

    updateClock();

    this.start = function(){
        timeinterval = setInterval(updateClock, 1000);
    }
    this.stop = function(){
      clearInterval(timeinterval);
    }
}

var deadline = new Date("Jan 5, 2021 15:37:25");
var init = new initializeClock('clockdiv', deadline);
initializeClock('clockdiv', deadline);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM