簡體   English   中英

Javascript中的倒計時在IE中無法正常工作

[英]Countdown in Javascript don't work correctly in IE

我在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(不是數字)。

誰能幫我?

問題可能在此行中:

var s = num+"";

num是一個整數,您告訴JS添加(而不是concat)一個字符串。 不能將字符串添加到整數中。您需要先將num轉換為字符串,然后再添加或使用另一種方法將num和空字符串組合在一起。

要將數字轉換為字符串,應使用:

number.toString();

使用new Date("May 18, 2014 12:00:00" + current_year)並沒有多大意義,因為它兩次指定了一個年份-一次作為字符串中間的2014年字面量,一次指定current_year

但是除此之外,我猜想IE在接受哪種日期字符串格式方面不太靈活,因此為了安全起見,您可以分別指定所有日期部分(請注意,月份是從零開始的):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM