一个html元素可以有多个ID吗?

时间:2008-10-10 16:04:16

标签: html xhtml standards-compliance

我知道ID在HTML / XHTML页面中必须是唯一的。

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

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

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

18 个答案:

答案 0 :(得分:186)

没有。来自XHTML 1.0 Spec

  

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

答案 1 :(得分:178)

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

Selectors spec对此很清楚:

  

如果一个元素有多个ID属性,那么为了ID选择器的目的,所有这些属性都必须被视为该元素的ID。这种情况可以通过使用xml:id,DOM3 Core,XML DTD和特定于命名空间的知识。


修改

只是澄清:是的,XHTML元素可以有多个ID,例如

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

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

答案 2 :(得分:27)

我的理解一直是:

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

    • 归为唯一标识符(仅)一个元素
  • 课程可以多次使用 ......

    • 因此,它们可以应用于多个元素,同样又不同,每个元素可以有多个类(即多个类)

答案 3 :(得分:26)

否。虽然HTML 4的definition from w3c似乎没有明确涵盖您的问题,但definition of the name and id attribute表示标识符中没有空格:

  

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

答案 4 :(得分:17)

没有。每个DOM元素(如果它具有id)都具有单个唯一ID。您可以使用以下内容进行近似:

<div id='enclosing_id_123'><span id='enclosed_id_123'></span></div>

然后使用导航来获得您真正想要的内容。

如果您只是想申请样式,那么班级名称会更好。

答案 5 :(得分:16)

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

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

完全合法。

答案 6 :(得分:4)

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

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

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

答案 7 :(得分:3)

不能为单个标记设置多个ID,但我看到一个带有name属性和id属性的标记被某些应用程序视为相同。

答案 8 :(得分:2)

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

  

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

  

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

所以“id”必须是唯一的,不能包含空格。

答案 9 :(得分:1)

没有

话虽如此,没有什么可以阻止你这样做。但是你会发现各种浏览器的行为不一致。不要这样做。每个元素1个ID。

如果您想要对元素使用类进行多次赋值(用空格分隔)。

答案 10 :(得分:0)

ID应该是唯一的,因此您只能在页面上使用一次特定的ID。类可以重复使用。

检查https://www.w3schools.com/html/html_id.asp了解更多详细信息。

答案 11 :(得分:0)

这很有趣,但据我所知,答案是肯定的。我不明白为什么你需要一个嵌套ID,因为你通常会将它与另一个具有相同嵌套ID的元素交叉。如果你不这样做,那么如果你这样做仍然没有什么意义。

答案 12 :(得分:0)

不然。

https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute

  

该值不得包含任何空格字符。

id="a b"&lt; - 找到 VaLuE 中的空格字符。

那就是说,你可以设置多个ID的样式。但如果您遵循规范,答案就是否定。

答案 13 :(得分:0)

课程是专门为此而制作的, 这是您可以理解的代码

<html>
<head>
    <style type="text/css">
     .personal{
            height:100px;
            width: 100px;   

        }
    .fam{
            border: 2px solid #ccc;
        }   
    .x{
            background-color:#ccc;
        }   

    </style>
</head>
<body>

    <div class="personal fam x"></div>

</body> 
</html>

答案 14 :(得分:0)

我想在技术上说是的,因为实际上呈现的内容在技术上总是依赖于浏览器。大多数浏览器都尽可能地遵守规范,据我所知,css规范中没有任何内容可以反对它。我只是要保证在任何其他解释器进入之前发送到浏览器的实际html,css,javascript代码。

但是我也说不,因为我通常测试的每个浏览器实际上都没有让你。 如果您需要自己查看,请将以下内容保存为.html文件,并在主要浏览器中打开它。在我在javascript函数上测试的所有浏览器中都不匹配元素。但是,从id标签中删除“hunkojunk”,一切正常。 示例代码

<html>
<head>
</head>
<body>
    <p id="hunkojunk1 hunkojunk2"></p>

<script type="text/javascript">
    document.getElementById('hunkojunk2').innerHTML = "JUNK JUNK JUNK JUNK JUNK JUNK";
</script>
</body>
</html>

答案 15 :(得分:0)

我知道这已经有一年了,但我自己很好奇,我相信其他人会在这里找到自己的方式。 简单的答案是否定的,正如其他人在我之前所说的那样。一个元素不能有多个ID,并且一个ID不能在页面中多次使用。尝试一下,你会看到没有工作的程度。

回应tvanfosson关于在两个不同元素中使用相同ID的答案。据我所知,ID只能在页面中使用一次,无论它是否附加到不同的标签。

根据定义,需要ID的元素应该是唯一的,但如果您需要两个ID,那么它并不是唯一的,而是需要一个类。

答案 16 :(得分:-1)

Any ID assigned to a div element is unique.
However, you can assign multiple IDs "under", and not "to" a div element.
In that case, you have to represent those IDs as <span></span> IDs.

Say, you want two links in the same HTML page to point to the same div element in  the page.

The two different links
<p><a href="#exponentialEquationsCalculator">Exponential Equations</a></p>         

<p><a href="#logarithmicExpressionsCalculator"><Logarithmic Expressions</a></p>

Point to the same section of the page. 
<!-- Exponential / Logarithmic Equations Calculator -->
<div class="w3-container w3-card white w3-margin-bottom">      
   <span id="exponentialEquationsCalculator"></span>
   <span id="logarithmicEquationsCalculator"></span>
</div>

答案 17 :(得分:-4)

我认为你不能拥有两个Id,但它应该是可能的。使用相同的id两次是一个不同的情况......就像两个人使用相同的护照。然而,一个人可以拥有多本护照......因为我有一个单一的员工可以拥有多种功能的情况,所以来寻找这个。说具有id =“sysadm teamcoordinator”的“sysadm”和“团队协调员”会让我从其他页面引用它们,以便employees.html #sysadm和employees.html#teamcoordinator将导致同一个地方...有一天某人否则可能会接管团队协调员功能,而sysadm仍然是sysadm ...然后我只需要更改employees.html页面上的ID ......但就像我说的那样 - 它不起作用:(