直接上代码,如下:
表单
从代码注释里的运行结果可以看到,在低版本浏览器IE67下,getAttribute()获得的结果有些bug。
本来我以为是,defaultvalue中包含了value的原因。
后来发现,把defaultvalue改成dvalue或者devalue或者defvalue等其他的,都是正常的,只有为defaultvalue的时候是不正常的(改成defaultValue的时候也是不正常的)。
改了下代码,去掉了input中的自定义属性 defaultvalue="defaultname",发现结果为:
alert(input.getAttribute('value')); //testalert(input.getAttribute('defaultvalue')); //IE67为test,其他浏览器为 nullalert(input.getAttribute('defaultcontent')); //contentalert(input.defaultValue); //test
现象描述:
input.defaultValue返回的值为:input中value的值,在各个浏览器中值相同;
input.getAttribute('defaultvalue')返回的值分为以下几种情况:
1)input中有属性value,且有属性defaultvalue,则input.getAttribute('defaultvalue')在IE67中均返回value值,在其他浏览器下返回defaultvalue的值;
2)input中有属性value,没有属性defaultvalue,则input.getAttribute('defaultvalue')在IE67中均返回value值,在其他浏览器下返回null;
3)input中没有属性value,有属性defaultvalue,则input.getAttribute('defaultvalue')在IE67中均返回空,在其他浏览器下返回defaultvalue的值;
4)input中有属性value,没有属性defaultvalue,则input.getAttribute('defaultvalue')在IE67中均返回value值,在其他浏览器下返回null;
关于input.getAttribute('defaultvalue')返回的值的总结:
在IE67中,input.getAttribute('defaultvalue')的值即为对应value字段的值;
在其他浏览器中,input.getAttribute('defaultvalue')的值为对应defaultvalue字段的值。
为了避免错误的发生,input中的字段,最好不要取名为"defaultvalue"或者"defaultValue"。