Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使这个倒计时计时器倒计时到一个特定的日期,而不仅仅是从一个时间?_Javascript_Countdowntimer - Fatal编程技术网

Javascript 如何使这个倒计时计时器倒计时到一个特定的日期,而不仅仅是从一个时间?

Javascript 如何使这个倒计时计时器倒计时到一个特定的日期,而不仅仅是从一个时间?,javascript,countdowntimer,Javascript,Countdowntimer,我正在尝试更改这个JavaScript,使它倒计时到一个特定的日期——2019年12月16日,而不是仅仅说15天,我已经尝试了一些事情,但还是卡住了 function getTimeRemaining(endtime) { var t = Date.parse(endtime) - Date.parse(new Date()); var seconds = Math.floor((t / 1000) % 60); var minut

我正在尝试更改这个JavaScript,使它倒计时到一个特定的日期——2019年12月16日,而不是仅仅说15天,我已经尝试了一些事情,但还是卡住了

        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();
        var timeinterval = setInterval(updateClock, 1000);
      }

      var deadline = new Date(Date.parse(new Date()) + 15 * 24 * 60 * 60 * 1000);
      initializeClock('clockdiv', deadline);
函数getTimeRemaining(endtime){
var t=Date.parse(endtime)-Date.parse(new Date());
var秒=数学地板((t/1000)%60);
var分钟=数学地板((t/1000/60)%60);
可变小时数=数学楼层((t/(1000*60*60))%24);
风险天数=数学下限(t/(1000*60*60*24));
返回{
“总计”:t,
“天”:天,
“小时”:小时,
“分钟”:分钟,
“秒”:秒
};
}
函数初始化锁(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');
函数updatelock(){
var t=GetTime剩余时间(endtime);
daysSpan.innerHTML=t.days;
hoursSpan.innerHTML=('0'+t.hours).slice(-2);
minuteSpan.innerHTML=('0'+t.minutes).slice(-2);
secondsSpan.innerHTML=('0'+t.seconds).slice(-2);

if(t.total稍微修改了代码以获得一个工作倒计时。尽管如此,我在修改代码之前并没有实际测试代码

我的代码没有考虑闰日或夏令时。因此,由于几周后的时间变化,现在它需要一个小时的休息时间。但是,我的算法会自我更正。因此,在时间变化后它将是正确的

function getTimeRemaining(endDate) {
    var now = new Date();
    var timeSpanInMilliseconds = Date.parse(endDate) - now;
    var millisecondsInSecond = 1000;
    var millisecondsInMinutes = millisecondsInSecond * 60;
    var millisecondsInHours = millisecondsInMinutes * 60;
    var millisecondsInDays = millisecondsInHours * 24;

    var days = Math.floor(timeSpanInMilliseconds / millisecondsInDays);
    var remainingMilliseconds = timeSpanInMilliseconds - days * millisecondsInDays;
    var hours = Math.floor(remainingMilliseconds / millisecondsInHours);
    remainingMilliseconds = remainingMilliseconds - hours * millisecondsInHours;
    var minutes = Math.floor(remainingMilliseconds / millisecondsInMinutes);
    remainingMilliseconds = remainingMilliseconds - minutes * millisecondsInMinutes;
    var seconds = Math.floor(remainingMilliseconds / millisecondsInSecond);

    return {
        'total': millisecondsInSecond,
        'days': days,
        'hours': hours,
        'minutes': minutes,
        'seconds': seconds
    };
}

function initializeClock(id, endDate) {
    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');

    var timeInterval = setInterval(updateClock, 1000);

    updateClock();

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

        daysSpan.innerHTML = t.days;
        hoursSpan.innerHTML = t.hours < 10 ? '0' + t.hours : t.hours;
        minutesSpan.innerHTML = t.minutes < 10 ? '0' + t.minutes : t.minutes;
        secondsSpan.innerHTML = t.seconds < 10 ? '0' + t.seconds : t.seconds;

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

var endDate = new Date(2019, 11, 16);
initializeClock('clockdiv', endDate);
函数getTimeRemaining(endDate){
var now=新日期();
var timespaninmillizes=Date.parse(endDate)-now;
var毫秒s=1000;
var毫秒分钟=毫秒每秒*60;
var毫秒小时=毫秒分钟*60;
var毫秒数天=毫秒数小时*24;
变量天数=数学下限(时间间隔毫秒/毫秒天数);
var remainingmillizes=timespaninmillizes-days*毫秒sindays;
var小时=数学下限(剩余毫秒/毫秒小时);
剩余毫秒=剩余毫秒-小时*毫秒小时;
var minutes=数学下限(剩余毫秒/毫秒分钟);
剩余毫秒=剩余毫秒-分钟*毫秒分钟;
var秒=数学地板(剩余毫秒/毫秒每秒);
返回{
“总计”:毫秒每秒,
“天”:天,
“小时”:小时,
“分钟”:分钟,
“秒”:秒
};
}
函数初始化锁(id,endDate){
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');
var timeInterval=setInterval(updatelock,1000);
updatelock();
函数updatelock(){
var t=GetTimeResisting(endDate);
daysSpan.innerHTML=t.days;
hoursSpan.innerHTML=t.hours<10?'0'+t.hours:t.hours;
minutesSpan.innerHTML=t.minutes<10?'0'+t.minutes:t.minutes;
secondsSpan.innerHTML=t.seconds<10?'0'+t.seconds:t.seconds;

如果(t.total在“initializelock('clockdiv',deadline);”中,我认为clockdiv指的是一个id。因此,您应该在它前面加上“#”。@SkyeMacMaster不需要“#”前缀,因为在initializelock()中,OP用于选择不需要散列字符的元素。您是否尝试过:“var deadline=new Date('2019年12月16日');”