根据this MDN article,复选框的checked属性仅指示默认情况下是否勾选复选框,而不是其当前状态.

然而,非常基本的测试显示does反映了复选框的当前状态:

<input type="checkbox" id="test">
<button type="button" onclick="console.log(document.querySelector('#test').checked);">Test</button>

MDN文章是错误的,还是浏览器根本不符合这里的规范?

推荐答案

MDN文章是正确的.浏览器也是正确的.这种差异可以通过以下事实来解释:HTML复选框同时具有checked content attributechecked JavaScript property,两者相关但不同.本文讨论了前者,而您的代码使用了后者.

101 content attribute对应于<input>元素的HTML标记中的实际checkedchecked=""checked="checked"属性(如果有的话).您可以通过调用Element.getAttribute方法获取属性的值:

<input type="checkbox" id="test" checked="checked">
<button type="button" onclick="console.log(document.querySelector('#test').getAttribute('checked') ?? 'null');">Log Attribute</button>

在上面的片段中,默认情况下勾选复选框,无论您打开还是关闭复选框,该按钮都将记录字符串"checked".

相比之下,正如您所观察到的那样,100 JavaScript property反映了复选框的当前状态:

<input type="checkbox" id="test" checked="checked">
<button type="button" onclick="console.log(document.querySelector('#test').checked);">Log Property</button>

Javascript相关问答推荐

TypScript:根据共享属性对项目进行分组并为其分配groupID

Angular 拦截器错误处理删除方法问题

使用CDO时如何将Vue组件存储在html之外?

materialized - activeIndex返回-1

有条件的悲剧

vscode扩展-webView Panel按钮不起任何作用

屏幕右侧屏障上的产卵点""

简单的PayPal按钮集成导致404错误

保持物品顺序的可变大小物品分配到平衡组的算法

Chart.js-显示值应该在其中的引用区域

我创建了一个创建对象的函数,我希望从该函数创建的对象具有唯一的键.我怎么能做到这一点?

使用POST请求时,Req.Body为空

如何使用JavaScript拆分带空格的单词

从Nextjs中的 Select 项收集值,但当单击以处理时,未发生任何情况

钛中的onClick事件需要在两次点击之间等待几秒钟

如何修复使用axios运行TSC index.ts时出现的错误?

在渲染turbo流之后滚动到元素

使用CEPRESS截取时,cy.Wait()在等待5000ms的第一个路由请求时超时

react 路由如何使用从加载器返回的数据

如何让SVG图标在被点击和访问后改变 colored颜色 ,并在被访问后取消点击时恢复到原来的 colored颜色 ?