首页 > 解决方案 > 为什么 element.setAttribute('checked', true) 不起作用?

问题描述

我想做这样的事情:

elementX.setAttribute('checked', true); // this is input type checkbox
elementY.appendChild(elementX);

渲染和其他事情一切正常,但在页面上,输入未被检查。当我查看 chrome 控制台中的元素时,我可以看到:

<input type="checkbox" checked="true">

我应该怎么办?

我已经试过了

elementX.setAttribute('checked', true);
elementX.setAttribute('checked', 'true');
elementX.setAttribute('checked', 'checked');

我在控制台中没有任何错误。

标签: javascripthtmldom

解决方案


MDN

检查

一个布尔属性,指示是否默认选中此复选框(当页面加载时)。它不表示当前是否选中了此复选框:如果复选框的状态发生更改,则此内容属性不会反映更改。(仅更新了 HTMLInputElement 的选中 IDL 属性。)。

虽然设置checked属性会显示元素序列化的变化,但实际上不会选中复选框。为此,您必须调用 setter,例如

elementX.checked = true;

推荐阅读