我了解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感到好奇。
Answers:
否。根据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分配给同一属性。
This specification doesn't preclude an element having multiple IDs, if other mechanisms (e.g. DOM Core methods) can set an element's ID in a way that doesn't conflict with the id attribute.
(与CSS规范相对应)
id
属性分配ID 。为了澄清,该xml:id
属性(实际上是默认名称空间之外的任何属性)在XHTML中无效。但是,正如您从HTML5规范中引用的那样,这绝不会导致xml:id="bar"
默默地失败;仍会bar
向该元素添加ID,以使其与匹配#bar
。
我的理解一直是:
ID是一次性使用的,仅应用于一个元素...
类可以多次使用 ...
不会。每个DOM元素(如果有ID)都有一个唯一的ID。您可以使用类似以下内容的方法进行估算:
<div id='enclosing_id_123'><span id='enclosed_id_123'></span></div>
然后使用导航获取您真正想要的。
如果您只是想应用样式,那么类名会更好。
不,如果要沿着该路径行驶,则应使用嵌套的DIV。此外,即使可以,也请想象一下在运行document.getElementByID()时会引起的混乱。如果有多个ID,它将获取什么ID?
在一个稍微相关的主题上,您可以将多个类添加到DIV中。请参阅以下网址的Eric Myers讨论:
getElementById();
没有指定获取内容的字符串就什么也不做?getElementById('foo');
将获得以foo作为ID的元素!多个ID在这里无关紧要。它仍然会寻找“ foo”。
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>
http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2
id属性为元素分配唯一标识符(可以由SGML解析器验证)。
和
ID和NAME令牌必须以字母([A-Za-z])开头,后跟任意数量的字母,数字([0-9]),连字符(“-”),下划线(“ _”) ,冒号(“:”)和句点(“。”)。
因此,“ id”必须唯一且不能包含空格。
我想从技术上说是的,因为从技术上讲,渲染的内容实际上始终取决于浏览器。据我所知,大多数浏览器都尽力保持其最佳规格,而据我所知,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>
我知道今年已经一岁了,但是我自己对此感到很好奇,我相信其他人也会在这里找到自己的路。正如其他人在我之前所说的那样,简单的答案是“不”。一个元素不能有一个以上的ID,并且一个ID在一个页面中不能多次使用。尝试一下,您会发现它不起作用。
回应tvanfosson关于在两个不同元素中使用相同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>
没错
https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute
该值不得包含任何空格字符。
id="a b"
<-在该VaLuE中找到空格字符。
也就是说,您可以设置多个ID的样式。但是,如果您遵循规格,答案是否定的。
ID应该是唯一的,因此您只能在页面上使用一次特定的ID。类可以重复使用。
检查https://www.w3schools.com/html/html_id.asp了解更多详细信息。
我认为您不能有两个ID,但应该可以。两次使用相同的身份证是不同的情况……就像两个人使用同一本护照。但是,一个人可能有多本护照...之所以要这样做,是因为我遇到的情况是,一个雇员可以同时担任多个职务。假设具有id =“ sysadm teamcoordinator”的“ sysadm”和“ team coordinator”可以让我从其他页面引用它们,以便employee.html#sysadm和employee.html#teamcoordinator可以到达同一地点...某天某人在sysadm仍为sysadm的情况下,否则可能会接管团队协调员的职能……那么,我只需要更改employee.html页面上的ID,但就像我说的那样-它不起作用:(