我遇到的蛋疼的JS兼容问题

来源:互联网 发布:网络机顶盒无线连接 编辑:程序博客网 时间:2024/05/29 03:17

一、Date的实例化

这个让我着实蛋疼了一下午。我习惯性的获取了日期的string=“2014-06-20”, 然后又想当然的new Date("2014-06-20")

在chrome, firefox,IE9下ok没问题,很高兴。休息了一会测试报过来ie6、ie7、ie8上js显示数据不对,日期全部显示成"NAN", "not a number";

var m=(new Date("2014-06-20")).getMonth();alert(m)显示NANalert(typeof(m)) 显示number这让我郁闷了一把

然后开始怀疑ie6、7、8下实例化的这个date对象,弹出日期字符串正常。郁闷,难道new Date() 不支持字符串参数声明,可文档里是有的???

后来查到date还有其他的声明方式date(year,month,day),不过这个声明方式太过复杂,如过你date(2014,6,20)生成的日期对象是2014-07-20的,那个月份和日期要做很多判断,

超级麻烦,难道js中就没有一种通用的简单的声明日期对象的方式?如果没有js的设计者就太失败了!

然后就在群里跟那群程序傻冒们讨论,有一个哥们声称曾经“2014/06/20”的方式通过了ie6-8系列,很是怀疑!抱着试试的态度,哇,差点眼泪出来了。

这里要告诉大家的是var d = new Date("2014-06-20");的声明方式是通不过IE6-8的,请改用var d = new Date("2014/06/20");

注意:

我们通常会将“2014-06-20”中的 “-” 替换成 “/”。最初没有去细究js中的replace方法。于是又想当然的str.replace("-","/"),结果js的replace方法是只替换一次,也就是只会将第一个“-”替换,

但是人家是支持正则表达式的,所以如果下次要替换所有“-”的时候就需要str.replace(/\-/g,"/");

自从会了点正则表达式

二、table

0 0
原创粉丝点击