removeAttribute('checked') 不起作用

Posted

技术标签:

【中文标题】removeAttribute(\'checked\') 不起作用【英文标题】:removeAttribute('checked') not workingremoveAttribute('checked') 不起作用 【发布时间】:2016-10-29 05:35:42 【问题描述】:

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

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

这些主题(以及我阅读的许多其他主题)在我的情况下都没有用:我不想使用 jQuery,所以这样做的合乎逻辑的方法是使用 removeAttribute 函数,就像这样:

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

好像执行了,但是没有效果。

我的代码有点复杂和庞大,在这里发布它,所以我制作了一个更相关的 jsFiddle 来向您展示问题:https://jsfiddle.net/54fd795w/

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

有什么想法让它工作或找到解决方法吗? 谢谢。

【问题讨论】:

直接改属性,document.getElementById('box').checked = false; 这里:jsfiddle.net/54fd795w/1 确定吗?我虽然是所谓的“二元属性”,意思是值无关紧要,所以“真”、“真”、“假”、“否”、“鸭”,所有这些值都代表真?跨度> 是的,没关系,感谢您的回答! 检查这个小提琴jsfiddle.net/54fd795w/5 【参考方案1】:

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

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

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

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

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

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

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

【讨论】:

以上是关于removeAttribute('checked') 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

session的removeAttribute和invalidate的区别

csharp 的removeAttribute()

勾选复选框按钮可用否则不可用

2018.8.4session的removeAttribute()和invalidate()的区别

JavaScript基础 删除属性removeAttribute 删除Body节点下第一个子节点的style属性

清除session信息