我知道ID在HTML / XHTML页面中必须是唯一的。
我的问题是,对于给定的元素,我可以为它分配多个ID吗?
<div id="nested_element_123 task_123"></div>
我意识到我只需使用一个类就可以轻松解决问题。我只是对以这种方式使用id感到好奇。
答案 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讨论,
答案 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 ......但就像我说的那样 - 它不起作用:(