我正在将具有一些过时属性的页面转换为今天更加友好的XHTML,并且遇到了锚标记的主题。特别:
<a name="someName"></a>
将锚标签转换为<a id="someName"></a>
后,我的IDE给了我一些关于不在我的锚标签中使用重复ID的友好建议。事实证明,so does W3。
id和name属性共享相同的名称空间。这意味着它们不能在同一文档中定义具有相同名称的锚点。允许使用这两个属性为以下元素指定元素的唯一标识符:A,APPLET,FORM,FRAME,IFRAME,IMG和MAP。当两个属性用于单个元素时,它们的值必须相同。
该网页叛逆地工作,没有任何行为异常,尽管有重复。
页面逻辑保证只使用给定的名称或ID呈现单个HTML元素,因此不存在重复的href #someName
。
考虑到这一点:
以上使用案例是否仍违反使用重复名称/ ID的W3C指南?
将页面转换为使用唯一ID需要花费很多精力,但这样做可能有所值。我是新手,如果我遗漏了一些纯粹哲学或明显的东西,那么道歉。
答案 0 :(得分:2)
ID在DOM中是唯一的。这会对JavaScript产生明显的影响:document.getElementById('someName')
只会选择可能可用的多个id="someName"
元素的一个。它可能是第一个,但没有办法保证哪一个。