【发布时间】:2015-09-22 16:15:50
【问题描述】:
引自 HTML5 最终规范 (http://www.w3.org/TR/html5/forms.html#attr-label-for):
可以指定
for属性来指示与标题关联的表单控件。如果指定了属性,则属性的值必须是与标签元素在同一文档中的labelable element的ID。如果指定了属性并且 Document 中有一个元素的ID等于for属性的值,并且第一个这样的元素是labelable element,那么该元素是标签元素的标签控件。
最后一句话措辞奇怪:它在单个元素中谈论“第一个这样的元素”,似乎暗示文档中可以有多个具有相同 ID 的元素.粗体部分是否意味着被解读为“and that element”?
编辑。回答我的问题的人似乎认为规范正在定义一种行为,以防规范规则(唯一 ID)之一被破坏。这对我来说听起来完全不可信。如果您违反规范中的规则,您将自担风险并获得未定义的行为,期间。我从来没有见过这样的规范:这是规则,但如果你违反它,别担心,事情仍然会像这样那样工作。
【问题讨论】:
-
我已将此添加到下面的答案中,以解决您的问题:在 VBScript 中有一个“控件数组”的概念,它是通过为控件提供相同的 ID 而创建的。然后将它们区分并寻址为 ID(0)、ID(1) 等。这样实现的这个概念在 JavaScript 中不存在。 VBScript 不应再用于客户端脚本,但它仍然存在。因此,虽然 ID 应该是唯一的,但不禁止复制它们。
-
“禁止”可能不是描述这一点的最佳术语。具有重复的
id属性是invalid,并且规范描述了浏览器遇到这种无效条件时的行为。一般来说,浏览器可以容忍标记中的无效条件,并在可能的情况下寻求修复它们或回退到合理的行为。 -
@steveax 浏览器是宽容的 - 是的,但规范考虑到违反其规则之一?有很多事情可能会破坏 HTML5 规则,按照您的逻辑 HTML5 应该考虑所有(或更多)?然而它并没有这样做,除了只在这个特定的地方(大约
labelfor)——这让我认为这是一个错字,而不是故意考虑到这种无效标记。
标签: html