removeAttribute('checked')不起作用

Che*_*tan 2 javascript checkbox

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

但是由于未知的原因,我无法取消选中该复选框。在互联网上搜索教我删除“选中”属性以取消选中该框,因为“选中”是二进制属性: 使用JavaScript选中/取消选中复选框?删除复选框的“已选中”属性

在我的情况下,这些主题(以及我阅读的许多其他主题)都不是有用的:我不想使用jQuery,因此做到这一点的逻辑方法是使用removeAttribute函数,如下所示:

document.getElementById('box').removeAttribute('checked');
Run Code Online (Sandbox Code Playgroud)

它似乎已执行,但看不到任何效果。

我的代码有些复杂,要在此处发布,所以我做了一个更相关的jsFiddle来向您展示问题:https ://jsfiddle.net/54fd795w/

通过使用这些按钮,无论框处于何种状态,您都可以看到用于选中该框的按钮正在工作,而用于取消选中的按钮则不起作用。

有任何使它起作用或找到解决方法的想法吗?谢谢。

Que*_*tin 6

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

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

document.getElementById('box').checked = false;
Run Code Online (Sandbox Code Playgroud)

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

document.getElementById('box').checked = "checked";
Run Code Online (Sandbox Code Playgroud)

…您正在修改属性,并且字符串"checked"正在转换为boolean true。该checked属性仅接受布尔值。这将覆盖默认状态(未选中,因为没有选中的属性)。

您甚至都没有要删除的选中属性。