例题1.new Date("2018-03-30")在IE8及以下浏览器返回NaN
原因:日期字符串的格式不能被某些浏览器转换,如果把2018-03-30修改为2018/03/30就可以转换
解决方案:
1. 把字符串格式转换下
new Date("2018-03-30".replace(/-/gm,"/")).getTime();
2. 利用parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。
由于parse()方法参数的日期格式为yyyy/MM/dd,所以需要将现有的日期格式通过replace()方法将日期字符串替换成yyyy/MM/dd格式。
Date.parse("2018-03-30".replace(/-/gm,"/"));
注意:不同的浏览器还是存在差异的,以下列出了所有浏览器都支持的方式。
var d = new Date(2011, 01, 07); // yyyy, mm-1, dd
var d = new Date(2011, 01, 07, 11, 05, 00); // yyyy, mm-1, dd, hh, mm, ss
var d = new Date("02/07/2011"); // "mm/dd/yyyy"
var d = new Date("02/07/2011 11:05:00"); // "mm/dd/yyyy hh:mm:ss"
var d = new Date(1297076700000); // milliseconds
var d = new Date("Mon Feb 07 2011 11:05:00 GMT"); // ""Day Mon dd yyyy hh:mm:ss GMT/UTC
例题2.IE9的input不支持onchange事件问题
解决方案:需要把onchenge修改为onblur事件
onchange触发原则
1.当input捕获到焦点后,系统储存当前值
2.当input焦点离开后,判断当前值与之前存储的值是否不等,如果为true则触发onchange事件。
3.非IE可以回车触发
4.通过DOM对象赋值不会触发