首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >checked = " checked“vs checked= true

checked = " checked“vs checked= true
EN

Stack Overflow用户
提问于 2012-05-18 17:41:27
回答 5查看 147.1K关注 0票数 46

下面两种用法有什么不同?

代码语言:javascript
复制
document.getElementById('myRadio').checked = "checked";

代码语言:javascript
复制
document.getElementById('myRadio').checked = true;

对我来说,两者的表现是一样的。但是,我只是好奇为什么会有两种方法来做同样的事情。

哪一种将是理想的用法?我需要支持IE7和更高版本。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-18 17:46:15

document.getElementById('myRadio').checked是一个布尔值。应为truefalse

document.getElementById('myRadio').checked = "checked";将字符串转换为布尔值,这是真的。

document.getElementById('myRadio').checked = true;只是赋值true而不进行类型转换。

使用true,因为它稍微更有效率,并且更能揭示维护人员的意图。

票数 58
EN

Stack Overflow用户

发布于 2012-05-18 17:52:09

该元素同时具有一个属性和一个名为checked的属性。该属性确定当前状态。

属性是一个字符串,属性是一个布尔值。从HTML代码创建元素时,将从标记设置属性,并根据属性的值设置属性。

如果标记中没有该属性的值,则该属性将变为null,但该属性始终为truefalse,因此它将变为false

设置该属性时,应使用布尔值:

代码语言:javascript
复制
document.getElementById('myRadio').checked = true;

如果设置该属性,则使用一个字符串:

代码语言:javascript
复制
document.getElementById('myRadio').setAttribute('checked', 'checked');

请注意,设置属性也会更改属性,但设置属性不会更改属性。

还要注意,无论您将该属性设置为什么值,该属性都将变为true。即使您使用空字符串或null,设置该属性也意味着选中它。使用removeAttribute取消选中使用以下属性的元素:

代码语言:javascript
复制
document.getElementById('myRadio').removeAttribute('checked');
票数 15
EN

Stack Overflow用户

发布于 2012-05-18 17:43:49

原始的checked属性(HTML4及之前的版本)不需要值-如果存在,元素就会被“检查”,如果不存在,就不会。

然而,这对于HTML4之后的XHTML是无效的。

标准建议使用checked="checked"作为true的条件-所以你发布的两种方式最终都做了同样的事情。

使用哪种方法真的无关紧要--使用对你来说最有意义的方法并坚持下去(或者与你的团队达成一致)。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10650233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档