2

<input checked>对比<input checked="checked">

两者似乎都有效。在w3schools上存在第一种语法。

4

2 回答 2

4

是的。这是有效的。

任何布尔属性都不必附加值。简单地存在意味着“真实”。

需要一个值来自 XML/XHTML,其中这种语法是不合法的,尽管即使在它们中,简单的存在意味着“真实”,尽管该值取决于您所遵循的规范(尽管当前的 whatwg 规范确实这么说true并且false不是有效值)。

whatwg 当前的 HTML 标准对布尔属性有这样的说法:

许多属性是布尔属性。元素上存在布尔属性表示真值,不存在该属性表示假值。

W3 HTML 5 本质上说该值需要是属性名称本身的小写 ASCII 值:

如果存在该属性,则其值必须是空字符串或与属性的规范名称匹配的不区分大小写的 ASCII 值,并且没有前导或尾随空格。

这在HTML 4.01 规范中也得到了回应:

布尔属性可以合法地采用单个值:属性本身的名称(例如,selected="selected")。

(感谢 Jukka K. Korpela 提供最后两个的链接)。

于 2013-03-31T13:50:28.187 回答
2

两者在 HTML 4.01 规范下都是有效的,并且当文档以 HTML 媒体类型 (text/html) 提供时,它们都可以在所有浏览器中工作,这是服务器通常所做的。一些非常早期的浏览器只接受较短的形式,但那是非常古老的历史。

当使用 XML 媒体类型(例如为 XHTML 设计的那些)提供服务时,都会使文档无效甚至格式不正确,因此浏览器根本不显示文档,只是一条错误消息。在 XHTML 中,元素必须是<input checked="checked" />.

HTML5 草案(以及 WHATWG “Living HTML”)没有太大变化。它调用像checked“布尔属性”这样的属性,这是一种误导(值true并且false根本不被接受),但语法规则与 HTML 4.01 相同,但checked=""也允许,并且该属性仅在该type属性时才被允许存在并具有值radioor checkbox(这一直是想法,但 HTML5 建议将此作为正式规则,将由标记验证器检查)。

w3schools 非常不可靠,见http://w3fools.com

于 2013-03-31T14:16:16.903 回答