当我在使用html属性时,我看到了布尔属性,并且我已经多次使用了它。
但是当我去到布尔属性的mdn文档时,我读到布尔属性只能有一个值,这个值通常与属性名相同。
而且正如我们所知,布尔属性可以在没有值的情况下编写。 但是当我做一些实验的时候我看到了一些奇怪的行为
<input type="text" disabled />
这是一个输入元素,它有布尔属性,没有值,它工作正常。
<input type="text" disabled="disabled" />
这是一个输入元素,它具有布尔属性,该属性的值与它们的名称相同,并且正如预期的那样,它可以正常工作。
<input type="text" disabled="anything" />
这里有一个具有布尔属性的输入元素,它具有任何值,并且可以正常工作。
为什么有任何值的布尔属性能正常工作?
检查HTML标准中的任何语法问题。 引用一下:
许多属性是布尔属性。 元素上有布尔属性表示true值,没有该属性表示false值。
如果存在该属性,则其值必须是空字符串,或者是与该属性的规范名称不区分大小写的ASCII匹配的值,并且没有前导或后尾空格。
布尔属性上不允许使用值“true”和“false”。 要表示false值,必须完全省略该属性。
下面是选中并禁用复选框的示例。 选中和禁用的属性是布尔属性。
这可以等效地写成:
您还可以混合样式; 以下仍然是等价的:
为什么有任何值的布尔属性能正常工作?
浏览器有大量用于从无效HTML恢复的错误处理例程。
那是其中之一。