下面两种用法有什么不同?
document.getElementById('myRadio').checked = "checked";和
document.getElementById('myRadio').checked = true;对我来说,两者的表现是一样的。但是,我只是好奇为什么会有两种方法来做同样的事情。
哪一种将是理想的用法?我需要支持IE7和更高版本。
发布于 2012-05-18 17:46:15
document.getElementById('myRadio').checked是一个布尔值。应为true或false
document.getElementById('myRadio').checked = "checked";将字符串转换为布尔值,这是真的。
document.getElementById('myRadio').checked = true;只是赋值true而不进行类型转换。
使用true,因为它稍微更有效率,并且更能揭示维护人员的意图。
发布于 2012-05-18 17:52:09
该元素同时具有一个属性和一个名为checked的属性。该属性确定当前状态。
属性是一个字符串,属性是一个布尔值。从HTML代码创建元素时,将从标记设置属性,并根据属性的值设置属性。
如果标记中没有该属性的值,则该属性将变为null,但该属性始终为true或false,因此它将变为false。
设置该属性时,应使用布尔值:
document.getElementById('myRadio').checked = true;如果设置该属性,则使用一个字符串:
document.getElementById('myRadio').setAttribute('checked', 'checked');请注意,设置属性也会更改属性,但设置属性不会更改属性。
还要注意,无论您将该属性设置为什么值,该属性都将变为true。即使您使用空字符串或null,设置该属性也意味着选中它。使用removeAttribute取消选中使用以下属性的元素:
document.getElementById('myRadio').removeAttribute('checked');发布于 2012-05-18 17:43:49
原始的checked属性(HTML4及之前的版本)不需要值-如果存在,元素就会被“检查”,如果不存在,就不会。
然而,这对于HTML4之后的XHTML是无效的。
标准建议使用checked="checked"作为true的条件-所以你发布的两种方式最终都做了同样的事情。
使用哪种方法真的无关紧要--使用对你来说最有意义的方法并坚持下去(或者与你的团队达成一致)。
https://stackoverflow.com/questions/10650233
复制相似问题