Javascript 勾选=“已勾选”;勾选“;vs检查=真
以下两种用法的区别是什么Javascript 勾选=“已勾选”;勾选“;vs检查=真,javascript,html,Javascript,Html,以下两种用法的区别是什么 document.getElementById('myRadio').checked = "checked"; 及 对我来说,两者的行为方式都是一样的。但是,我只是想知道为什么有两种方法可以做同样的事情 哪一个是理想的用法?我需要支持IE7和更高版本。原始的checked属性(HTML 4和之前的版本)不需要在其上设置值-如果存在,则元素被“选中”,如果不存在,则元素不被选中 但是,这对于HTML4之后的XHTML无效 该标准建议使用checked=“checked”
document.getElementById('myRadio').checked = "checked";
及
对我来说,两者的行为方式都是一样的。但是,我只是想知道为什么有两种方法可以做同样的事情
哪一个是理想的用法?我需要支持IE7和更高版本。原始的
checked
属性(HTML 4和之前的版本)不需要在其上设置值-如果存在,则元素被“选中”,如果不存在,则元素不被选中
但是,这对于HTML4之后的XHTML无效
该标准建议使用checked=“checked”
作为true的条件-因此,您发布的两种方式最终都会做相同的事情
你使用哪一个其实并不重要——使用对你最有意义的一个,并坚持下去(或者与你的团队达成一致)。
checked
属性是一个布尔值,所以“checked”
其他“string”
的值将布尔false
转换为true
任何字符串值都将为true。属性的存在也使其成为现实:
<input type="checkbox" checked>
只有使用JS在DOM中进行布尔更改,才能取消勾选
所以答案是:他们是平等的
文档。getElementById('myRadio')。选中的是布尔值。它应该是true
或false
document.getElementById('myRadio').checked=“checked”代码>将字符串强制转换为布尔值,这是真的
document.getElementById('myRadio')。checked=true代码>只指定true
而不强制转换
使用true
,因为它稍微更有效,并且更能向维护人员揭示意图。document.getElementById('myRadio')
返回DOM元素,我将在这个答案中将其称为elem
elem.checked
访问DOM元素名为checked
的属性。此属性始终是布尔值
编写HTML时,在XHTML中使用checked=“checked”
;在HTML中,您只需使用checked
。在设置属性时(这是通过<代码> .StestAtg'(“检查”、“检查”)< /C> >进行的,您需要提供一个值,因为一些浏览器认为不存在空值。
但是,由于您有DOM元素,因此没有理由设置该属性,因为您可以简单地为它使用-更舒适-布尔属性。由于非空字符串在布尔上下文中被视为true
,因此将elem.checked
设置为“checked”
或任何其他非伪值(即使'false'
或'0'
)都将选中该复选框。没有理由不使用true
和false
,尽管如此,您应该坚持使用正确的值。元素有一个名为的属性和一个名为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');
你把JavaScriptDOM属性和HTML属性搞混了(为了更好的度量,你在浏览器错误恢复中搞混了)。在HTML4和更早的版本中,它确实需要一个值……这个名称是可选的。i、 e.checked=“checked”
是完整版本,但您可以将checked=“
和”
关闭,只保留值。(SGML可能会变得很奇怪!)也就是说,问题在于DOM属性,而不是HTML规则。@Quentin-很公平,尽管这几乎是关于语义的争论。属性和属性之间有很好的解释。谢谢
document.getElementById('myRadio').removeAttribute('checked');