Javascript倒计时到小时

时间:2016-09-09 07:54:13

标签: javascript jquery

我目前正在使用由Keith Wood创建的jQuery Countdown插件,但是我无法让它工作,我需要显示一天中某个时间剩余的小时,分​​钟和秒数(例如:18:00:00)。

body标签内的代码:

<?php
$begintijd = $display['start'].":00:00";
?>
<script>
var begintijd = "<?php echo $begintijd ?>";
$(function () {
    var vandaag = new Date();
    werktijd = new Date(vandaag.getDay() begintijd);
    $('#defaultCountdown').countdown({until: werktijd, format: 'HMS'});
});
</script>

$ display ['start']在这种情况下返回18(值正确)。

head标签内的代码:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="assets/plugin/js/jquery.plugin.js"></script>
<script src="assets/plugin/js/jquery.countdown.js"></script>

jQuery插件文件:http://keith-wood.name/js/jquery.plugin.js

jQuery倒计时文件:http://keith-wood.name/js/jquery.countdown.js

Chrome在参数列表“在线:

后面写了”未捕获的SyntaxError:缺失“
werktijd = new Date(vandaag.getDay() 18:00:00);

我是Javascript的新手,如果提前感谢,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

我有一个没有任何插件的脚本,可能正在使用

<强> HTML

<div id="days"></div>
<div id="hours"></div>
<div id="minutes"></div>
<div id="seconds"></div>

Javascript&amp; PHP

<%php $begintijd = $display['start']; %>

$(document).ready(function(){  
    var timer = null,
        begintijd = "<%php echo $begintijd %>",
        endTime = new Date(); //time you want to end

   endTime.setHours(begintijd);
   endTime.setMinutes(0);
   endTime.setSeconds(0);
   endTime = (Date.parse(endTime)) / 1000;

    function makeTimer() {
        var now = new Date(),
            now = (Date.parse(now) / 1000),
            timeLeft = endTime - now;
       if(timeLeft > 0){
            var days = Math.floor(timeLeft / 86400),
                hours = Math.floor((timeLeft - (days * 86400)) / 3600),
                minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60),
                seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
           if (hours < "10") { hours = "0" + hours; }
           if (minutes < "10") { minutes = "0" + minutes; }
           if (seconds < "10") { seconds = "0" + seconds; }    

           $("#days").html(days + "<span>Days</span>");
           $("#hours").html(hours + "<span>Hours</span>");
           $("#minutes").html(minutes + "<span>Minutes</span>");
           $("#seconds").html(seconds + "<span>Seconds</span>");

      }else{
       clearInterval(timer);
       $("#seconds").html("<span>00Seconds</span>");
      }  
   }
timer = setInterval(function() { makeTimer(); }, 1000);
})

JS Fiddle https://jsfiddle.net/69ax5j4L/

答案 1 :(得分:0)

似乎下面的代码不会返回有效日期“???”是“,”或“ - ”(我无法弄清楚你在哪里尝试做):

var vandaag = new Date();
werktijd = new Date(vandaag.getDay() ??? begintijd);

所以第一步是在它之后添加一个`console.log(werktijd)来检查它是否返回一个有效的日期(并且,我知道,如果它是在当天)。

接下来检查Date() syntax

如果我没错,你要做的是:

var vandaag = new Date();
// (EDIT) var begintijdHour = new Date(begintijd).getHours();
var begintijdTime = new Date(
    vandaag.toDateString()
    + " "
    +  begintijd
);

werktijd = new Date(
    vandaag.getFullYear(),
    vandaag.getMonth(),
    vandaag.getDay(),
    begintijTime.getHours(),
    begintijTime.getMinutes(),
    begintijTime.getSeconds()
);

// Checks:
console.log(vandaag); // Should output current time.
console.log(begintijdHour); // If shows NaN, then begintijd is much
    // probably not properly formatted as valid dateString input
    // (see below w3schools link).

编辑:我知道输入缺少日期部分后,我在下面编辑了。还修改了上次werktijd计算,以考虑分钟和秒(如果提供)。

如果您只想接收帐户小时部分(就像原始代码一样),您可以通过简单地使用正则表达式来完成。无需将 begintij 转换为Date()对象。只需将其计算为:

var begintijHour = begintij.replace(/:.*/, '');