html元素可以有多个ID吗?

我了解ID在HTML / XHTML页面内必须唯一。

我的问题是,对于给定的元素,我可以为其分配多个ID吗?

<div id="nested_element_123 task_123"></div>

我意识到我只需使用一个类就可以轻松解决问题。我只是好奇以这种方式使用id。

樱Eva2020/03/24 11:47:24

不,如果要沿着该路径行驶,则应使用嵌套的DIV。此外,即使可以,也请想象一下在运行document.getElementByID()时会造成的混乱。如果有多个ID,它将获取什么ID?

在一个稍微相关的主题上,您可以将多个添加到DIV中。请参阅以下网址的Eric Myers讨论:

http://meyerweb.com/eric/articles/webrev/199802a.html

梅斯丁2020/03/24 11:47:24

http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2

id属性为元素分配一个唯一标识符(可以由SGML解析器验证)。

ID和NAME令牌必须以字母([A-Za-z])开头,然后可以跟任意数量的字母,数字([0-9]),连字符(“-”),下划线(“ _”) ,冒号(“:”)和句点(“。”)。

因此,“ id”必须唯一且不能包含空格。

樱小胖Mandy2020/03/24 11:47:24

不,您不能为单个标签具有多个ID,但是我看到了带有name属性的标签id一些应用程序将其视为相同属性。

Eva小胖2020/03/24 11:47:24

每个元素只能有一个ID,但实际上可以有多个类。但是没有多个类属性,请将多个类值放入一个属性中。

<div id="foo" class="bar baz bax">

是完全合法的。

宝儿Jim2020/03/24 11:47:24

我的理解一直是:

  • ID是一次性使用的,仅适用于一个元素...

    • 每个属性都作为唯一标识符(仅)一个元素
  • 类可以多次使用 ...

    • 因此,它们可以应用于一个以上的元素,并且类似但又有所不同,每个元素可以有一个以上的类(即多个类)
番长2020/03/24 11:47:24

相反的是其他人说,正确的答案是YES

选择器的规格是非常清楚这一点:

如果一个元素具有多个ID属性,则出于ID选择器的目的,必须将所有这些属性都视为该元素的ID。使用xml:id,DOM3 Core,XML DTD和特定于命名空间的混合可以达到这种情况知识。


编辑

只是为了澄清一下:是的,一个XHTML元素可以有多个id,例如

<p id="foo" xml:id="bar">

但是无法id使用以空格分隔的列表将多个ID分配给同一属性。

神乐番长2020/03/24 11:47:24

不会 虽然w3c中HTML 4 定义似乎没有明确涵盖您的问题,但是name和id属性定义表明标识符中没有空格:

ID和NAME令牌必须以字母([A-Za-z])开头,然后可以跟任意数量的字母,数字([0-9]),连字符(“-”),下划线(“ _”) ,冒号(“:”)和句点(“。”)。

Tom凯2020/03/24 11:47:24

否。根据XHTML 1.0规范

在XML中,片段标识符的类型为ID,每个元素只能有一个类型为ID的属性。因此,在XHTML 1.0中,将id属性定义为ID类型。为了确保XHTML 1.0文档是结构良好的XML文档,当在上述元素上定义片段标识符时,XHTML 1.0文档必须使用id属性。有关确保在将XHTML文档作为媒体类型text / html提供服务时确保此类锚向后兼容的信息,请参见HTML兼容性指南。