HTML元素ID的合法字符是什么?

27

在HTML元素的标识符中我可以使用什么字符?

例如:

<SPAN id="section[5]" ...>

(或者说,我应该坚持使用某些字符以确保id在所有主要浏览器/JavaScript引擎中都能正常工作)。

6个回答

22
在HTML5中,唯一的限制是ID必须在文档内唯一,至少包含一个字符且不包含空格。详见http://www.w3.org/TR/2014/REC-html5-20141028/dom.html#the-id-attribute 正如其他回答所指出的,HTML 4更加严格,规定:
ID和NAME令牌必须以字母([A-Za-z])开头,并可以后跟任意数量的字母、数字([0-9])、连字符("-")、下划线("_")、冒号(":")和句点(".")。

13
在HTML 4中,id属性保存一个NAME标记,这些标记有定义

ID和NAME标记必须以字母([A-Za-z])开头,并可跟任意数量的字母、数字([0-9])、连字符("-")、下划线("_")、冒号(":")和句点(".")。

正如在之前的帖子中所指出的,根据你的实现方式,在使用冒号和句点等字符时可能会遇到问题:HTML中id属性的有效值是什么?

1
在HTML5中,有更少的限制:ID必须在文档中唯一,包含至少一个字符并且不包含空格,就这些。请参见http://www.w3.org/TR/html5/dom.html#the-id-attribute。 - Tim Down
正如@Tim Down所说,HTML5消除了大多数限制。请参见http://mathiasbynens.be/notes/html5-id-class,该网页还解释了如何转义奇怪的ID(或其他属性值)以供在CSS和JavaScript中使用。 ([我也为此制作了一个工具。](http://mothereffingcssescapes.com/)) - Mathias Bynens

7

来自http://www.w3.org/TR/html4/types.html:

ID和NAME令牌必须以字母([A-Za-z])开头,可以后跟任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“_”)、冒号(“:”)和句点(“.”)。


1
HTML5消除了大部分的限制。请参见http://mathiasbynens.be/notes/html5-id-class,其中还解释了如何转义用于CSS和JavaScript中的奇怪ID(或其他属性值)。 (我也为此制作了一个工具。) - Mathias Bynens

3

以上所有答案+ID必须是唯一的


2
HTML4规范 中得知:
ID和NAME标记必须以字母([A-Za-z])开头,后面可以跟任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“_”)、冒号(“:”)和句点(“.”)。

HTML5摆脱了大部分限制。请参见http://mathiasbynens.be/notes/html5-id-class,其中还解释了如何转义用于CSS和JavaScript的奇怪ID(或其他属性值)。 ([我也为此制作了一个工具。](http://mothereffingcssescapes.com/)) - Mathias Bynens

0

实际上,我也可以成功地使用一个°符号,例如:

< span id= "test°" />

看起来是允许的,而且我在使用jQuery或其他方式通过选择器获取DOM元素时也没有问题。也许其他字符也可以工作,但我没有测试过所有的字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接