HTML:display:none是否允许具有相同名称的多个ID属性(当“隐藏”)?

12

根据HTML标准,网页中任何HTML标签的ID属性都必须在文档中是唯一的!

这个规则是否也适用于通过使用display:none将其“禁用/隐藏”的HTML标签呢?

示例:

<html>
<body>
<div id="one"></div>
<div id="one" style="display:none;"></div>
</body>
</hmtl>

这是有效的HTML吗?问题是,使用"display:none"隐藏元素是否在只有单个网页上具有唯一ID属性的规则方面也“计数/重要”?

谢谢 Jan

6个回答

18

这不是一个有效的标记。验证过程不考虑应用于DOM元素的CSS样式。

每个ID仍然只能有一个元素,无论它是否可见,无论它是否在z堆栈中的其他元素后面,无论它是否位于视口之外等。


3

标识符必须是唯一的...否则就是在冒险!


2
表述不清楚!我觉得这很容易被误解...你是在回答他所提出的第一种方式吗(“这个规则是否也适用于使用display:none来“禁用/隐藏”HTML标签?”),还是第二种方式(“这是有效的HTML吗?”)? - Richard JP Le Guen
一个请求更正的评论对于那位脾气暴躁的投票者来说已经足够了。 - Zoidberg

2
当然,正如其他人所提到的,这不是有效的标记。在这里你还需要考虑DOM选择。`document.getElementById()`选择一个具有特定ID的元素,而不管它在文档中的可见性/显示如何。

1

无论它们是否隐藏,它们仍然存在于文档中。即使它们是动态创建的,它们也不应该具有相同的ID。“这不是有效的标记”-开发人员Art


0

对一个元素进行样式设置(甚至应用display:none),并不会将该元素从文档树中移除。


0
所以问题是,“display:none”=隐藏元素是否也适用于该规则?
是的。CSS不影响节点是否被视为文档的一部分。
只有当它们不都包含在同一个文档(或DocumentFragment)的层次结构中时,才可以具有相同ID的多个元素,例如当您刚刚使用JavaScript创建了一个新节点但尚未将其appendChild到文档中时。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接