<input checked>
对比<input checked="checked">
两者似乎都有效。在w3schools上存在第一种语法。
是的。这是有效的。
任何布尔属性都不必附加值。简单地存在意味着“真实”。
需要一个值来自 XML/XHTML,其中这种语法是不合法的,尽管即使在它们中,简单的存在意味着“真实”,尽管该值取决于您所遵循的规范(尽管当前的 whatwg 规范确实这么说true
并且false
不是有效值)。
whatwg 当前的 HTML 标准对布尔属性有这样的说法:
许多属性是布尔属性。元素上存在布尔属性表示真值,不存在该属性表示假值。
W3 HTML 5 本质上说该值需要是属性名称本身的小写 ASCII 值:
如果存在该属性,则其值必须是空字符串或与属性的规范名称匹配的不区分大小写的 ASCII 值,并且没有前导或尾随空格。
这在HTML 4.01 规范中也得到了回应:
布尔属性可以合法地采用单个值:属性本身的名称(例如,selected="selected")。
(感谢 Jukka K. Korpela 提供最后两个的链接)。
两者在 HTML 4.01 规范下都是有效的,并且当文档以 HTML 媒体类型 (text/html) 提供时,它们都可以在所有浏览器中工作,这是服务器通常所做的。一些非常早期的浏览器只接受较短的形式,但那是非常古老的历史。
当使用 XML 媒体类型(例如为 XHTML 设计的那些)提供服务时,都会使文档无效甚至格式不正确,因此浏览器根本不显示文档,只是一条错误消息。在 XHTML 中,元素必须是<input checked="checked" />
.
HTML5 草案(以及 WHATWG “Living HTML”)没有太大变化。它调用像checked
“布尔属性”这样的属性,这是一种误导(值true
并且false
根本不被接受),但语法规则与 HTML 4.01 相同,但checked=""
也允许,并且该属性仅在该type
属性时才被允许存在并具有值radio
or checkbox
(这一直是想法,但 HTML5 建议将此作为正式规则,将由标记验证器检查)。
w3schools 非常不可靠,见http://w3fools.com