这个问题还没有经过深入的分析和确认,先跟大家分享一下表象和个人初步的判断。

目前最直接的是IE8里面会有这个问题。我们有时候可能会通过给DOM元素自定义一些属性用以保存数据,比如通常<li>标签是没有“value”这个属性的,但实际上<li value=”XXX”>这个写法,我们也是可以正常的去读取或设置“value”这个属性,相信大家也会经常这样使用。现在很出现的一个很灵异的问题是,至少在IE8里面,这个value属性好像被默认为整型了,如果用脚本设置li.value=“some string”,实际上value值会被设置成1。如果用脚本设置li.value=12345678912 这样比较长的数字,可能会溢出,脚本会报错,而且还不能强制转换成字符串,因为转了也没有用….也许这应该算是IE8的一个BUG,不巧被我碰上了,还没有去验证其他浏览器会怎么样。但是可以肯定的是,即便是在IE8里面,只要这个属性名不是“value”,这个问题就不复存在了。

鉴于IE8或者IE系列的浏览器目前还是我们比较常用的浏览器,大家以后如果需要再使用自定义的属性时,尽量不要使用value这个名字…

有兴趣的同学可以去验证一下… 或者还可以得出其他结论,我这里就算抛砖引玉吧。