HTML checked属性仅控制页面首次加载的默认选中状态,后续操作改变的是DOM property(element.checked),而非HTML attribute;正确修改应直接赋值checked属性,监听用change事件,CSS :checked伪类响应实时状态。
HTML
属性控制默认选中状态
它只影响页面首次加载时的初始状态,不是运行时的实时状态。一旦页面渲染完成,
属性就“完成任务”了;后续勾选/取消勾选操作改变的是元素的
属性值
(即 DOM property),而不是 HTML 中写的那个
属性
(即 HTML attribute)。
是布尔属性:写上即表示
,不写即
;不需要写
或
(后者仅 XHTML 强制要求)
对
和
有效,其他类型(如
、
)忽略该属性
多个
同名(
相同)时,只有第一个带
的会被默认选中;但多个
可各自独立设置
如果服务端模板(如 ASP.NET Web Forms、Razor)动态输出 HTML,注意不要让逻辑错误导致多个同名
都带
—— 浏览器会按文档顺序取最后一个生效,行为不可靠
JavaScript 修改选中状态不能只改
用
或
不会真正改变控件的勾选视觉和行为,尤其在 Chrome/Firefox 中可能完全无效。这是因为 DOM property(
)和 HTML attribute(
)是两个不同东西。
正确做法是直接读写
这个 JS 属性:
或
如果必须用属性操作(比如 SSR 渲染后初始化),优先用
,但依旧推荐直接赋值
property
监听变化要用
事件,不是
—— 用户用空格键切换 checkbox 也会触发
,但不触发
伪类只能响应 DOM property 变化
CSS 的
看的是当前元素是否被用户或脚本通过
设为选中,而不是看 HTML 里有没有写
属性。也就是说,它反映的是实时状态,不是初始标记。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
这类样式,只有在用户点击或 JS 设置
后才生效
如果你用 JS 清除了
属性但没改
,
依然匹配
反过来,删掉 HTML 中的
属性,但保留
,
仍起作用
注意 Safari 对
(通用兄弟选择器)的支持比
(相邻兄弟)略差,复杂布局建议测试
ASP.NET Web Forms 中
和 HTML
容易混淆
服务器控件(如
)的
属性是服务端状态,它最终会决定是否在渲染出的 HTML 中写入
属性 —— 但这个映射只发生在页面生成阶段。回发(postback)后,控件的
值由请求体中的
和表单字段推导,不是靠解析 HTML。
立即学习
“
前端免费学习笔记(深入)
”;
不要在
里靠
判断,应直接读
如果禁用了 ViewState,又没在每次
里重新赋值
,那么用户勾选后回发,服务端看到的仍是初始值
前端 JS 改了
,但没触发表单提交,服务端完全感知不到 —— 这是常见调试盲区
实际开发中,最容易漏掉的是「初始状态 vs 运行时状态」的区分:HTML
属性只管第一次,JS
property 和 CSS
才管全程。三者不在同一层,混用就会出意料之外的行为。
checkedcheckedcheckedcheckedcheckedtruefalsechecked="true"checked="checked"textbuttonradionamecheckedcheckboxcheckedradiocheckedsetAttributeelement.setAttribute('checked', 'checked')removeAttribute('checked')element.checkedelement.getAttribute('checked')element.checkedbox.checked = truebox.checked = falseelement.toggleAttribute('checked', bool)checkedchangeclickchangeclick:checked:checkedelement.checked = truecheckedinput[type=checkbox]:checked + label { color: red; }.checked = truecheckedelement.checked:checkedcheckedelement.checked = true:checked:checked ~ .sibling+CheckBox.Checkedcheckedasp:CheckBoxCheckedcheckedChecked__EVENTTARGETPage_LoadRequest.Form["ctl00_ContentPlaceHolder1_CheckBox1"] != nullCheckBox1.CheckedPage_LoadCheckBox1.Checkeddocument.getElementById("...").checked = truecheckedchecked:checked