html5文档是否可能有两个ID?

CPC*_*CPC 1 html5 identifier

我想知道html5元素是否可以有两个id,如下所示:

<button id="thing1" id="thing2" name="Button1" onclick="change()">Click here</button>
Run Code Online (Sandbox Code Playgroud)

或这个:

<button id="thing1, thing2" name="Button1" onclick="change()">Click here</button>
Run Code Online (Sandbox Code Playgroud)

另外,如果其中一个id说了一件事,而另一个id说另一件事,哪一个会被使用?

eli*_*ide 5

TL; DR:不.


在所有版本的HTML中,每个元素只能有一个id.看规范:

id属性指定其元素的唯一标识符(ID).[DOM]

该值必须在元素的主子树中的所有ID中唯一,并且必须至少包含一个字符.该值不得包含任何空格字符.

注意:ID可以采取的形式没有其他限制; 特别是,ID可以只包含数字,以数字开头,以下划线开头,只包括标点符号等.

注意:元素的唯一标识符可用于各种目的,最明显的是作为使用片段标识符链接到文档的特定部分的方法,作为在编写脚本时定位元素的方法,以及作为特定样式的方式来自CSS的元素.

标识符是不透明的字符串.不应从id属性的值派生特定含义.

在您给出的示例中,解析器将只读取第一个id.如果你试过这个:

<button id="thing1,thing2" name="Button1" onclick="change()">Click here</button>
Run Code Online (Sandbox Code Playgroud)

(在没有空格的情况下id),你仍然只有一个id,其中包括逗号:thing1,thing2.


注意:没有理由要求两个id值不适合class以某种其他方式使用或存储数据.例如,在jQuery中,您可以 $('#some_id').data('foo', 'bar');保存一个以foo值命名的数据bar,并将其与具有id的元素相关联some_id.无论如何,类和数据存储通常比id更灵活.

编辑:请记住,类不仅适用于CSS.您可以<button id="thing1" class="thing2 thing3 thing42"...>使用javascript(简单或使用类似jQuery的库)来通过一个或多个类访问按钮.类名对于项是唯一的,不必在别处使用或在CSS文件中提及.

这里一个jsFiddle示例的链接,该示例说明了在一起使用时类和id的强大程度.