removeAttribute('已选中')无效

时间:2016-06-27 09:11:10

标签: javascript checkbox

我遇到一个关于复选框的奇怪问题。由于各种原因,我必须根据我的应用程序的上下文,以编程方式检查或取消选中复选框输入。

但由于未知原因,我无法取消选中该复选框。在互联网上搜索教我删除"已检查"属性以取消选中该框,因为"已选中"是二进制属性: Check/Uncheck checkbox with javascript?Remove attribute "checked" of checkbox

这些主题(以及我读过的许多其他主题)都不适用于我的情况:我不想使用jQuery,因此执行相同操作的逻辑方法是使用removeAttribute函数,就像这样:

document.getElementById('box').removeAttribute('checked');

它似乎被执行但没有效果可见。

我的代码有点复杂而且在这里发布很大,所以我提出了一个更相关的jsFiddle来向你展示问题:https://jsfiddle.net/54fd795w/

通过使用按钮,无论盒子的状态如何,您都可以看到用于选中复选框的按钮正在工作,而取消选中该按钮的按钮则不然。

任何想法让它发挥作用或找到解决方法? 感谢。

1 个答案:

答案 0 :(得分:5)

checked属性描述了该字段的默认状态。如果该字段已与之交互(或者其已检查的属性已被修改),则删除它将无效。

设置选中的属性。它代表当前状态。

document.getElementById('box').checked = false;

请注意,在您的第三方托管示例中,在“单击我检查”代码中:

document.getElementById('box').checked = "checked";

...您正在修改属性,字符串"checked"正在转换为布尔值truechecked属性只接受布尔值。这将覆盖默认状态(未选中,因为没有选中的属性)。

您甚至都没有要删除的已检查属性。