我遇到一个关于复选框的奇怪问题。由于各种原因,我必须根据我的应用程序的上下文,以编程方式检查或取消选中复选框输入。
但由于未知原因,我无法取消选中该复选框。在互联网上搜索教我删除"已检查"属性以取消选中该框,因为"已选中"是二进制属性: Check/Uncheck checkbox with javascript?和 Remove attribute "checked" of checkbox
这些主题(以及我读过的许多其他主题)都不适用于我的情况:我不想使用jQuery,因此执行相同操作的逻辑方法是使用removeAttribute函数,就像这样:
document.getElementById('box').removeAttribute('checked');
它似乎被执行但没有效果可见。
我的代码有点复杂而且在这里发布很大,所以我提出了一个更相关的jsFiddle来向你展示问题:https://jsfiddle.net/54fd795w/
通过使用按钮,无论盒子的状态如何,您都可以看到用于选中复选框的按钮正在工作,而取消选中该按钮的按钮则不然。
任何想法让它发挥作用或找到解决方法? 感谢。
答案 0 :(得分:5)
checked
属性描述了该字段的默认状态。如果该字段已与之交互(或者其已检查的属性已被修改),则删除它将无效。
设置选中的属性。它代表当前状态。
document.getElementById('box').checked = false;
请注意,在您的第三方托管示例中,在“单击我检查”代码中:
document.getElementById('box').checked = "checked";
...您正在修改属性,字符串"checked"
正在转换为布尔值true
。 checked
属性只接受布尔值。这将覆盖默认状态(未选中,因为没有选中的属性)。
您甚至都没有要删除的已检查属性。