我知道一个 id 在 HTML/XHTML 页面中必须是唯一的。
对于给定的元素,我可以为其分配多个 id 吗?
<div id="nested_element_123 task_123"></div>
我意识到我有一个简单的解决方案,只需使用一个类。我只是对以这种方式使用 id 感到好奇。
我知道一个 id 在 HTML/XHTML 页面中必须是唯一的。
对于给定的元素,我可以为其分配多个 id 吗?
<div id="nested_element_123 task_123"></div>
我意识到我有一个简单的解决方案,只需使用一个类。我只是对以这种方式使用 id 感到好奇。
不,来自XHTML 1.0 规范
在 XML 中,片段标识符属于 ID 类型,每个元素只能有一个 ID 类型的属性。因此,在 XHTML 1.0 中,id 属性被定义为 ID 类型。为了确保 XHTML 1.0 文档是结构良好的 XML 文档,XHTML 1.0 文档在上面列出的元素上定义片段标识符时必须使用 id 属性。有关在将 XHTML 文档作为媒体类型 text/html 提供服务时确保此类锚点向后兼容的信息,请参阅 HTML 兼容性指南。
与其他人所说的相反,正确答案是YES
选择器规范对此非常清楚:
如果一个元素有多个 ID 属性,则必须将所有这些属性都视为该元素的 ID,以用于 ID 选择器。这种情况可以通过混合使用 xml:id、DOM3 Core、XML DTD 和特定命名空间来实现知识。
编辑
澄清一下:是的,一个 XHTML 元素可以有多个 id,例如
<p id="foo" xml:id="bar">
但是使用空格分隔的列表将多个 id 分配给同一id
属性是不可能的。
我的理解一直是:
ID 是一次性的,仅适用于一个元素...
类可以多次使用...
不。 虽然W3C对 HTML 4 的定义似乎没有明确涵盖您的问题,但 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 id="foo" class="bar baz bax">
是完全合法的。
不,单个标签不能有多个 id,但我看到一个标签具有一个name
属性和一个id
属性,某些应用程序将其视为相同。
不,如果你想沿着这条路走,你应该使用嵌套的 DIV。此外,即使可以,想象一下运行 document.getElementByID() 时会引起的混乱。如果有多个ID,它将获取什么ID?
在一个稍微相关的主题上,您可以将多个类添加到一个 DIV。请参阅 Eric Myers 的讨论,
我想说技术上是的,因为实际上渲染的内容在技术上总是依赖于浏览器。大多数浏览器都尽可能地遵守规范,据我所知,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>
分配给 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 属性为元素分配一个唯一标识符(可以由 SGML 解析器验证)。
和
ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") , 冒号 (":") 和句点 (".")。
所以“id”必须是唯一的,不能包含空格。
正如其他人在我之前所说的那样,简单的答案是否定的。一个元素不能有多个 ID,并且一个 ID 不能在一个页面中多次使用。尝试一下,您会发现它不起作用。
回应tvanfosson关于在两个不同元素中使用相同 ID 的回答。据我所知,一个 ID 只能在一个页面中使用一次,无论它是否附加到不同的标签。
根据定义,需要一个 ID 的元素应该是唯一的,但如果您需要两个 ID,那么它并不是真正唯一的,而是需要一个类。
不。
话虽如此,没有什么可以阻止你这样做。但是你会得到与各种浏览器不一致的行为。不要这样做。每个元素一个 ID。
如果您想对一个元素进行多个分配,请使用类(用空格分隔)。
这很有趣,但据我所知,答案是肯定的。我不明白为什么需要嵌套 ID,因为您通常会将它与另一个具有相同嵌套 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="a b"
<-- 在该ValuE中找到空格字符。
也就是说,您可以设置多个 ID 的样式。但如果你遵循规范,答案是否定的。
ID 应该是唯一的,因此您应该只在页面上使用一次特定的 ID。类可以重复使用。
查看HTML id 属性(W3Schools) 了解更多详情。
我不认为你可以有两个身份证,但它应该是可能的。两次使用相同的身份证是不同的情况......就像两个人使用相同的护照。然而,一个人可能有多个护照......来找这个是因为我遇到了一个员工可以拥有多个功能的情况。说具有 id="sysadm teamcoordinator" 的“sysadm”和“team coordinator”可以让我从其他页面引用它们,以便employees.html#sysadm 和employees.html#teamcoordinator 会指向同一个地方......有一天有人否则可能会在 sysadm 仍然是 sysadm 时接管团队协调员功能......然后我只需要更改 employees.html 页面上的 id......但就像我说的 - 它不起作用:(