Javascript中的倒计时在IE中无法正常工作

时间:2014-03-05 11:02:44

标签: javascript countdown

我在JavaScript中找到倒计时,但由于某种原因,它在IE11中无法正常工作。

代码是:

var now = new Date();
var current_year = now.getFullYear();
var next_year = current_year + 1;

var target_date = new Date("May 18, " + current_year).getTime();

var days, hours, minutes, seconds;

var $days = document.getElementById("d");
var $hours = document.getElementById("h");
var $minutes = document.getElementById("m");
var $seconds = document.getElementById("s");

function update() {
    var current_date = new Date().getTime();
    var seconds_left = (target_date - current_date) / 1000;

    days = parseInt(seconds_left / 86400);
    seconds_left = seconds_left % 86400;

    hours = parseInt(seconds_left / 3600);
    seconds_left = seconds_left % 3600;

    minutes = parseInt(seconds_left / 60);
    seconds = parseInt(seconds_left % 60);

    $days.innerHTML = pad(days, 2);
    $hours.innerHTML = pad(hours, 2);
    $minutes.innerHTML = pad(minutes, 2);
    $seconds.innerHTML = pad(seconds, 2);
}


update();

setInterval(update, 1000);

function pad(num, size) {
    var s = num+"";
    while (s.length < size) s = "0" + s;
    return s;
}

当我将日期更改为当天的特定小时时,例如:

var target_date = new Date("May 18, 2014 12:00:00" + current_year).getTime();

我可以正确看到Chrome和Mozilla的倒计时,但在IE11(可能是较低版本)中,它显示为NaN(非数字)。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

问题可能出在这一行:

var s = num+"";

num是一个整数,你告诉JS添加(不是concat)一个字符串。字符串无法添加到整数...您需要在concatinating之前将num转换为字符串,或者使用另一种方法将num和空字符串组合在一起。

要将数字转换为字符串,您应该使用:

number.toString();

答案 1 :(得分:0)

使用new Date("May 18, 2014 12:00:00" + current_year)并没有多大意义,因为它指定一年两次 - 一次作为字符串中间的文字2014,一次使用{{1}中的任何内容}。

但除此之外,我猜IE对于它接受的日期字符串格式并不灵活,所以为了安全起见,您可以单独指定所有日期部分(注意月份是从零开始的):

current_year