JavaScript倒计时器在IE浏览器中显示NaN问题求助
解决IE浏览器中倒计时器显示NaN的问题
嗨,这个问题我太熟悉了!之前帮好几个开发者解决过IE里倒计时显示NaN的坑,核心原因就是IE对日期字符串的解析逻辑和现代浏览器不兼容!
你代码里用的日期格式"2018-05-25 12:00:00",Chrome、Firefox这些现代浏览器能按照ECMAScript规范正常解析,但IE(尤其是IE11及更早版本)不买账——它会把这种带空格的短横线分隔格式判定为无效日期,调用getTime()自然返回NaN,后续所有倒计时计算结果也就跟着变成NaN了。
两种靠谱的修复方案任你选:
方案一:改用IE支持的日期字符串格式
把短横线换成斜杠,或者把空格换成T(符合ISO 8601标准,IE也能识别),比如:// 斜杠+空格格式 var countDownDate = new Date("2018/05/25 12:00:00").getTime(); // 或者ISO 8601格式 var countDownDate = new Date("2018-05-25T12:00:00").getTime();方案二:手动传参构造Date对象(最稳妥)
完全避开字符串解析的兼容性问题,直接传入年、月、日、时、分、秒参数,注意月份是从0开始计数的(比如5月对应4):// 参数顺序:年, 月(0-11), 日, 时, 分, 秒 var countDownDate = new Date(2018, 4, 25, 12, 0, 0).getTime();
快速验证
修改后在IE里测试一下,new Date(...)应该能返回有效的日期对象,调用getTime()会输出一串数字时间戳,这样后续的倒计时计算就不会再出现NaN啦。
内容的提问来源于stack exchange,提问作者ThePiedPhper
相关产品推荐
相关产品推荐

