我知道在HTML/XHTML页面中id必须是唯一的。
对于一个给定的元素,我可以给它分配多个id吗?
<div id="nested_element_123 task_123"></div>
我意识到我有一个简单的解决方案,只需使用一个类。我只是好奇以这种方式使用id。
这很有趣,但据我所知,答案肯定是否定的。我不明白为什么您需要一个嵌套ID,因为您通常会与具有相同嵌套ID的另一个元素交叉。如果你不做,那就没有意义,如果你做了,那也没什么意义。
不,单个标记不能有多个id,但我曾见过带有name属性和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="a b"
也就是说,你可以样式多个id。但如果您遵循规范,答案是否定的。
<span></span>
例如,您希望同一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)了解更多细节。