简体   繁体   English

Javascript倒计时在Safari或IE中不起作用

[英]Javascript countdown doesn't work in Safari or IE

This function works in Chrome, but not on IE or Safari, what am I doing wrong? 此功能适用于Chrome,但不适用于IE或Safari,我做错了什么?

function countdown(){
    var dDay = new Date().getUTCDate() + 1;
    var dMonth = new Date().getUTCMonth() + 1;
    var dYear = new Date().getUTCFullYear();
    var BigDay = new Date(dYear+ ", " +dMonth+ ", " +dDay+ ",00:00:00");
    var msPerDay = 24 * 60 * 60 * 1000;
    var today = new Date();
            var timeLeft = (BigDay.getTime() - today.getTime());

            var e_daysLeft = timeLeft / msPerDay;
            var daysLeft = Math.floor(e_daysLeft);

            var e_hrsLeft = (e_daysLeft - daysLeft)*24;
            var hrsLeft = Math.floor(e_hrsLeft);

            var e_minsLeft = (e_hrsLeft - hrsLeft)*60;
            var minsLeft = Math.floor(e_minsLeft);

            var e_secsLeft = (e_minsLeft - minsLeft)*60;
            var secsLeft = Math.floor(e_secsLeft);
            if(daysLeft.toString().length === 1){
              daysLeft = "0"+daysLeft;
            } 
            if(hrsLeft.toString().length === 1){
              hrsLeft = "0"+hrsLeft;
            } 
            if(minsLeft.toString().length === 1){
              minsLeft = "0"+minsLeft;
            } 
            if(secsLeft.toString().length === 1){
              secsLeft = "0"+secsLeft;
            } 

            timeString = daysLeft + ":" + hrsLeft + ":" + minsLeft + ":" + secsLeft;
            return timeString;     
    }

I use this to print the counter 我用这个来打印柜台

window.setInterval(function(){
           $('#countdown').html("Time left: "+ countdown());
        }, 1000);

This is the result i get in Chrome: 这是我在Chrome中获得的结果:

Time left: 00:01:55:15

And this is the result i get in IE and Safari: 这是我在IE和Safari中得到的结果:

Time left: NaN:NaN:NaN:NaN

I think is because you are building an invalid date object in: 我想是因为你在以下方面构建一个无效的日期对象:

var BigDay = new Date(dYear+ ", " +dMonth+ ", " +dDay+ ",00:00:00");

Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date 文档: https//developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

A month is represented: 代表一个月:

Integer value representing the month, beginning with 0 for January to 11 for December. 表示月份的整数值,从1月的0开始到12月的11。

You only want to add a day to today, so try change your code in: 您只想在今天添加一天,因此请尝试更改您的代码:

var BigDay = new Date();
BigDay.setDate(BigDay.getDate() + 1);
BigDay.setHours(0, 0, 0, 0);

Demo: http://jsfiddle.net/IrvinDominin/HgUhq/ 演示: http//jsfiddle.net/IrvinDominin/HgUhq/

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

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