我有以下 JavaScript -
datefrom = new Date(event.min);
if (datefrom != 'Invalid Date') {
var day = datefrom.getDate();
var month = datefrom.getMonth() + 1; //Months are zero based
var year = datefrom.getFullYear();
var hour = datefrom.getHours();
var min = datefrom.getMinutes();
if (day < 10)
day = "0" + day;
if (month < 10)
month = "0" + month;
if (hour < 10)
hour = "0" + hour;
if (min < 10)
min = "0" + min;
datefrom = day + "/" + month + "/" + year + " " + hour + ":" + min;
$("#DateBox1").val(datefrom);
}
else {
alert('IM HERE!!!');
$("#DateBox2").val(originalFrom);
}
在 Chrome 和 FireFox 中使用该应用程序时,我可以成功进入 else
语句并发出警报“!M HERE!!!”不用担心,因为 datefrom 是无效日期。
但是 IE 指出 date from 是 NaN
并且由于某种原因我无法进入 else 语句。
我在 if 语句中添加了警报,以查看运行时的位置,但由于某种原因,我无法进入 else 并在 IE 中设置正确的值。为什么会出现这种情况???
最佳答案
了解输入值是什么会有所帮助,但通常您需要注意,在使用内置 Date
对象时,存在许多已知的跨浏览器怪癖。在一个浏览器中成功解析为日期的字符串在另一个浏览器中可能不会被视为有效。
其次,测试“无效日期”
可能不是确定日期是否有效的最佳方法。我建议 if(isNaN(datefrom.getDate()))
可能是一个更好的测试。
最后,如果您要解析日期字符串,您可能需要考虑使用可用于使日期在 JS 中更易于使用的第三方库之一。查找 Date.js或Moment.js 。这些库将为您提供更好的跨浏览器兼容性,以及标准 Date 对象中没有的其他功能。
关于javascript - IE 11 中的 Nan 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22805703/