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

Javascript中的倒计时在IE中无法正常工作,javascript,countdown,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 $d

我在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;
}
我可以在Chrome和Mozilla中正确地看到倒计时,但在IE11和更低版本中,它似乎不是一个数字


有人能帮我吗?

问题可能出在这一行:

var s = num+"";
num是一个整数,您告诉JS在字符串中添加not concat。无法将字符串添加到整数。。。您需要先将num转换为字符串,然后再使用其他方法合并num和空字符串

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

number.toString();

使用新DATMIEY 18, 2014 12:0:00 + Currest-Yead实际上没有意义,因为它指定了一年两次-一次作为字符串中的文字2014,一次与当前一年中的任何一次。< /P> 但除此之外,我想IE在接受日期字符串格式方面没有那么灵活,因此为了安全起见,您可以单独指定所有日期部分。请注意,月份是以零为基础的:

var target_date = new Date(current_year,4,18,12,0,0).getTime();

此错误通常发生在使用不包含数字的变量执行算术运算时。检查您的数据类型,包含10的字符串在某些地方可能被视为与值为10的整数不同,这可能会引发此错误。@Merlin Denker,但Javascript不适用于IE,因此代码是正确的。如果没有,Chrome/Mozilla无法正确显示它。。。你不这么认为吗?是的,但是如果你想支持旧的IE版本,你必须找到一个解决办法。检查我的答案,我想我发现了问题。您是否尝试过var target_date=new Date2014,4,18,12,0,0.getTime;请注意以零为基础的月份。这应该适用于所有浏览器。在IE11中对我有效:你的新日期2014年5月18日12:00:00+当前年份没有意义,因为它指定了两次年份。@nnnnnn就是这样!我已经试过了,但今年我离开了,但现在我用的是你的台词,它在所有浏览器中都能完美运行。你可以用它来回答这个问题。这个代码不是我的。它是发给我的,当我更改日期参数时,我没有显示数字,但Chrome/Safari出于某种原因显示。。。我有另一个倒数计时,效果很好,但他们坚持这一个…只需将假行更改为var s=num.toString;我想你会没事的。现在在IE里我什么也看不出来。过了一会儿,它又让我看到了NaN。此代码加载时间太长…字符串无法添加到整数中-如果所有浏览器中都有num+JS,则会自动将num转换为字符串,然后连接。添加空字符串是将数字转换为字符串的常用方法。我用这种方法做了很多次,所以我更喜欢使用.toString这种干净的方法
var target_date = new Date(current_year,4,18,12,0,0).getTime();