HTML元素可以有多个id吗?

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

对于一个给定的元素,我可以给它分配多个id吗?

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

我意识到我有一个简单的解决方案,只需使用一个类。我只是好奇以这种方式使用id。

442790 次浏览

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

不,单个标记不能有多个id,但我曾见过带有name属性和id属性的标记,某些应用程序对它们的处理是相同的。

不。从XHTML 1.0规范

在XML中,片段标识符是 类型ID,并且只能有 每个类型ID的单个属性 元素。因此,在XHTML 1.0中 Id属性定义为类型 ID。以确保XHTML 1.0 文档是结构良好的XML 文档,XHTML 1.0文档必须 定义时使用id属性 元素上的片段标识符 上面列出的。查看HTML 兼容性指南 有关确保此类锚的信息 服务时向后兼容吗 作为媒体类型的XHTML文档 text / html。< / p >

虽然HTML 4的W3C定义似乎没有明确地涵盖你的问题,但name和id属性的定义表示标识符中没有空格:

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

不。每个DOM元素(如果它有id)都有一个唯一的id。你可以用以下方法来近似:

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

然后使用导航来得到你真正想要的东西。

如果你只是想应用样式,类名会更好。

我的理解一直是:

  • id是单独使用并且只应用于一个元素…

    • 每个都是归因为 <强> < / >强唯一标识符 到(仅)一个元素
  • 类可以使用不止一次

    • 因此,它们可以应用于多于一个元素,类似但不同的是,可以有每个元素不止一个类(即多个类)

不,如果你想沿着那条路径走,你应该使用嵌套的div。此外,即使您可以,想象一下当您运行document.getElementByID()时它会引起的混乱。如果有多个ID,它会抓取哪个ID ?

在稍微相关的主题中,你可以在DIV中添加多个。参见Eric Myers的讨论,

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

每个元素只能有一个ID,但确实可以有多个类。但不要有多个类属性;将多个类值放入一个属性中。

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

完全合法。

正如其他人在我之前说过的那样,简单的答案是否定的。一个元素不能有多个ID,一个ID在一个页面中不能使用多次。尝试一下,你会看到它工作得有多好。

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

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

我不认为你可以有两个Id,但这应该是可能的。使用相同的id两次是不同的情况…比如两个人用同一本护照。然而,一个人可能有多本护照……我来找这个是因为我有一个情况,一个员工可以有几个职能。比如“sysadm”和“teamcoordinator”,id=“sysadm teamcoordinator”可以让我从其他页面引用它们,这样employees.html#sysadm和employees.html#teamcoordinator就会指向相同的位置……有一天,其他人可能会接管团队协调员的职能,而系统仍然是系统……那么我只需要更改employees.html页面上的id…但就像我说的,这行不通:(

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

选择器规范对这一点非常清楚:

如果一个元素有多个ID属性,为了ID选择器的目的,所有这些属性都必须被视为该元素的ID。这种情况可以混合使用xml:id、DOM3 Core、xml dtd和特定于名称空间的知识来实现。


编辑

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

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

但是使用空格分隔的列表将多个id分配给相同的id属性是不可能的。

我想说技术上是可以的,因为真正呈现的内容在技术上总是依赖于浏览器。大多数浏览器都尽可能地遵循规范,据我所知,CSS规范中并没有反对这一点。我只担保在任何其他解释器介入之前发送到浏览器的实际HTML、CSS和JavaScript代码。

然而,我也说不,因为我通常测试的每个浏览器实际上都不允许您这样做。

如果您需要自己查看,请将以下文件保存为.html文件,并在主要浏览器中打开它。在我测试的所有浏览器中,JavaScript函数都不能与元素匹配。然而,去掉“hunkojunk”;从id标签和所有工作正常。

示例代码

<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>

7.5.2元素标识符:id和类属性:

id属性将独特的标识符赋给一个元素(它可以 由SGML解析器验证)

而且

ID和NAME标记必须以字母([a- za -z])开头,并且可以为 后面跟着任意数量的字母,数字([0-9]),连字符("-"), 下划线(“_")冒号(“:”)和时间(“管理者”)。< / p >

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

类是专门为此制作的,并且 下面是你可以理解它的代码:

<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>

不。

话虽如此,没有什么能阻止你这么做。但是不同的浏览器会产生不一致的行为。不要这样做。每个元素一个ID。

如果需要对一个元素进行多个赋值,请使用classes(用空格分隔)。

不。

3.2.3.1 id属性 . 0:

不能包含空格。

id="a b" <——找到该< >强值< / >强中的空格字符。

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

任何分配给div元素的ID都是唯一的。 但是,您可以在“;”下面分配多个id,而不是“;”到“;”一个div元素。 在这种情况下,你必须将这些id表示为<span></span> id

例如,您希望同一HTML页面中的两个链接指向页面中的相同div元素。

这两个不同的链接

<p><a href="#exponentialEquationsCalculator">Exponential Equations</a></p>


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

指向页面的同一部分

<!-- Exponential / Logarithmic Equations Calculator -->
<div class="w3-container w3-card white w3-margin-bottom">
<span id="exponentialEquationsCalculator"></span>
<span id="logarithmicEquationsCalculator"></span>
</div>

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

查看HTML id属性 (W3Schools)了解更多细节。