js倒計時,顯示NaN天NaN時NaN分(或顯示天時分)


最近在開發跨平台的應用,在做秒殺功能時,倒計時出現了問題。默認在Chrome瀏覽器中運行,倒計時沒出現問題。而在IE瀏覽器,火狐瀏覽器,safari瀏覽器上運行時,則顯示NaN天NaN時NaN分(或顯示天時分)。上網查了好多日期轉換的函數都沒有解決問題。
在瀏覽器斷點調試下發現curTime,endTime,dDate的值顯示為NaN。大體查了一下NaN.
NaN 相關鏈接 http://www.w3school.com.cn/jsref/jsref_nan_number.asp
NaN 屬性是代表非數字值的特殊值。該屬性用於指示某個值不是數字。可以把 Number 對象設置為該值,來指示其不是數字值。
僅僅修改了一行代碼:
var dDate = new Date(Date.parse(sDate));   
改為var dDate = new Date(Date.parse(sDate.replace(/-/g,"/")));

js中 replace(/-/g, '/') 什么作用.
/-/g 
是正則表達式

表示將所有短橫線-替換為斜杠/,其中g表示全局替換

/g意思就是:global可選標志,帶這個標志表示替換將針對行中每個匹配的串進行,否則則只替換行中第一個匹配串。如:we.fdffddfwe.加上/g后,則2個we都會出來;

講解:

/pattern/是正則表達式的界定符,里面的內容(pattern)是要匹配的內容,就是本例中的/\//;

\是轉義的意思,\/代表的是/字符。



1.c_promo.js
 1 var tArr = [];
 2 (function () {
 3     var sCurTime = getCurTime();//yyyy-MM-dd HH:mm:ss
 4     $("[data-type='promo']").each(function (i, o) {
 5         var id = $(this).attr("data-id");
 6         var sEndTime = $(this).find("[name='endTime']").val();
 7 
 8         var curTime = getDateByStr(sCurTime);
 9         var endTime = getDateByStr(sEndTime);
10         var t = endTime.getTime() - curTime.getTime();
11 
12         if (t < 0) {
13             return true;
14         }
15 
16         var obj = {t: t, id: id};
17         tArr.push(obj);
18     });
19     setIntervalTime();
20     setInterval(setIntervalTime, 1000);
21 })();
22 
23 function setIntervalTime() {
24     $(tArr).each(function (i, o) {
25         var id = o.id;
26         var t = o.t;
27         t = t - 1000;
28         var o1 = parseTime(t);
29         o.t = t;
30         $("[data-id='" + id + "']").find(".hour").html(o1.h);
31         $("[data-id='" + id + "']").find(".min").html(o1.m);
32         $("[data-id='" + id + "']").find(".sec").html(o1.s);
33     });
34 }
2.common.js
 1 function parseTime(t) {
 2     var d = Math.floor(t / 1000 / 60 / 60 / 24);
 3     var h = Math.floor(t / 1000 / 60 / 60 % 24);
 4     var m = Math.floor(t / 1000 / 60 % 60);
 5     var s = Math.floor(t / 1000 % 60);
 6     //if (d > 0) {
 7     //    h = "--";
 8     //    m = "--";
 9     //    s = "--";
10     //} else if (d < 0) {
11     //    h = "00";
12     //    m = "00";
13     //    s = "00";
14     //} else {
15     if (h < 10) {
16         h = "0" + h;
17     }
18     if (m < 10) {
19         m = "0" + m;
20     }
21     if (s < 10) {
22         s = "0" + s;
23     }
24     //}
25 
26     var timeObj = {
27         d: d, h: h, m: m, s: s, t: t
28     };
29     return timeObj;
30 }
31 
32 function getDateByStr(sDate) {
33     // var dDate = new Date(Date.parse(sDate));    
34     var dDate = new Date(Date.parse(sDate.replace(/-/g,"/")));
35     return dDate;
36 }
 
         
         
        

 

 
        

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM