我理解在HTML/XHTML页面中,每个id必须是唯一的。
对于给定的元素,我能否给它分配多个id?
<div id="nested_element_123 task_123"></div>
我意识到只需使用类就可以轻松解决问题。我只是好奇以这种方式使用id。
我理解在HTML/XHTML页面中,每个id必须是唯一的。
对于给定的元素,我能否给它分配多个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文档,以上所列元素定义片段标识符时必须使用id属性。请参阅HTML兼容性指南,以了解如何在将XHTML文档作为text/html媒体类型提供时,确保这样的锚点具有向后兼容性。
与大家的说法相反,正确的答案是是的
选择器规范非常明确地说明了这一点:
如果一个元素具有多个ID属性,则在ID选择器的目的下,所有这些属性都必须被视为该元素的ID。可以使用xml:id、DOM3 Core、XML DTD和特定于命名空间的知识的混合来达到这种情况。
编辑
只是为了澄清:是的,XHTML元素可以具有多个ID,例如:
<p id="foo" xml:id="bar">
但是使用空格分隔的方式给相同的id
属性赋予多个id是不可能的。
编号。虽然W3C对HTML 4的定义似乎没有明确涵盖您的问题,但名称和ID属性的定义表示标识符中不允许有空格:
ID和NAME令牌必须以字母([A-Za-z])开头,可以后跟任意数量的字母、数字([0-9])、连字符("-")、下划线("_")、冒号(":")和句点(".")。
我的理解一直是:
ID 是单次使用的,只应用于一个元素...
类可以被多次使用...
不会。每个DOM元素,如果它有一个id,就有一个单一、独特的id。你可以使用类似下面的方法来近似:
<div id='enclosing_id_123'><span id='enclosed_id_123'></span></div>
然后使用导航来获得您真正想要的内容。
如果您只是想应用样式,则类名更好。
每个元素只能有一个ID,但是可以有多个类。但不要有多个class属性;将多个class值放入一个属性中。
<div id="foo" class="bar baz bax">
是完全合法的。
不,一个标签不能拥有多个id,但我曾经看到一个带有name
属性和id
属性的标签在某些应用程序中被视为相同的属性。
getElementById();
没有字符串指定要获取什么,它什么也不做!getElementById('foo');
将获取ID为foo的元素!多个ID在这里并不重要。它仍然会寻找“foo”。 - Rin and Len不行。
来自 3.2.3.1 id属性:
该值不能包含任何空格字符。
id="a b"
<-- 在这个 VaLuE 中找到了空格字符。
话虽如此,您可以为多个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>