• 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 }
    
    
    
    
    
    
    
    
  • 相关阅读:
    用jQuery开发插件详解
    position:absolute和float会隐式的改变display类型
    链家H5项目总结
    jQuery中的选择器
    jqeury实现全选和反选
    $.extend(),与$.fn.extend() 讲解(一)
    mybatis用distinct进行查询的问题
    mybatis 动态Sql的模糊查询
    mysql
    @RequestParam和@PathVariable的区别
  • 原文地址:https://www.cnblogs.com/langdon/p/5065736.html
Copyright © 2020-2023  润新知