例题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
对象赋值不会触发