以下两种用法有什么区别?
document.getElementById('myRadio').checked = "checked";
Run Code Online (Sandbox Code Playgroud)
和
document.getElementById('myRadio').checked = true;
Run Code Online (Sandbox Code Playgroud)
对我来说,两者的行为都是一样的.但是,我只是想知道为什么存在两种方法来做同样的事情.
哪一个是理想的用法?我需要支持IE7及更高版本.
Que*_*tin 48
document.getElementById('myRadio').checked
是一个布尔值.它应该是true
或false
document.getElementById('myRadio').checked = "checked";
将字符串强制转换为布尔值,这是真的.
document.getElementById('myRadio').checked = true;
只是指定true
没有铸造.
使用true
因为它略微更有效,并且更多的意图向维护者透露.
原始checked
属性(HTML 4及之前)不需要值 - 如果它存在,则元素被"检查",如果不存在,则不是.
但是,这对于HTML 4之后的XHTML无效.
该标准建议checked="checked"
用作真实的条件 - 所以你发布的两种方式最终都做同样的事情.
你使用哪一个并不重要 - 使用对你最有意义并坚持下去的那个(或者同意你的团队走哪条路).
该元素具有一个属性和一个名为的属性checked
.该属性确定当前状态.
该属性是一个字符串,属性是一个布尔值.从HTML代码创建元素时,将从标记设置属性,并根据属性的值设置属性.
如果标记中的属性没有值,则属性变为null
,但属性始终为true
或false
,因此它变为false
.
设置属性时,应使用布尔值:
document.getElementById('myRadio').checked = true;
Run Code Online (Sandbox Code Playgroud)
如果设置属性,则使用字符串:
document.getElementById('myRadio').setAttribute('checked', 'checked');
Run Code Online (Sandbox Code Playgroud)
请注意,设置属性也会更改属性,但设置属性不会更改属性.
另请注意,无论您将属性设置为什么值,属性都会变为true
.即使您使用空字符串,或null
设置属性意味着它已被选中.用于removeAttribute
使用属性取消选中元素:
document.getElementById('myRadio').removeAttribute('checked');
Run Code Online (Sandbox Code Playgroud)
document.getElementById('myRadio')
返回DOM元素,我将elem
在此答案中引用它.
elem.checked
访问DOM元素的名称属性checked
.此属性始终为布尔值.
在编写HTML时,您checked="checked"
在XHTML中使用; 在HTML中你可以简单地使用checked
.设置属性时(这是通过完成.setAttribute('checked', 'checked')
),您需要提供一个值,因为某些浏览器认为空值不存在.
但是,由于你有DOM元素,你没有理由设置属性,因为你可以简单地使用 - 更舒适 - 布尔属性.由于true
在布尔上下文中考虑非空字符串,因此设置elem.checked
为'checked'
或不是虚假值(偶数'false'
或'0'
)的任何其他内容将选中该复选框.没有理由不使用true
,false
尽管如此,你应该坚持正确的价值观.
归档时间: |
|
查看次数: |
123805 次 |
最近记录: |