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

时间:2014-01-31 21:18:03

标签: html5 identifier

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

<button id="thing1" id="thing2" name="Button1" onclick="change()">Click here</button>

或者这个:

<button id="thing1, thing2" name="Button1" onclick="change()">Click here</button>

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

2 个答案:

答案 0 :(得分:5)

TL; DR :否。


在所有HTML版本中,每个元素只能有一个id。见the spec

  

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

     

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

     

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

     

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

     

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

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

<button id="thing1,thing2" name="Button1" onclick="change()">Click here</button>

id中没有空格),您仍然只有一个ID,其中包含逗号:thing1,thing2


注意:没有理由要求两个id值不适合使用class或以其他方式存储数据。例如,in jQuery, you can do $('#some_id').data('foo', 'bar');用于保存名为foo且值为bar的数据,并将其与ID为some_id的元素相关联。无论如何,类和数据存储通常比id更灵活。

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

这是a link到一个jsFiddle示例,说明了在一起使用时类和id有多强大。

答案 1 :(得分:2)

简短回答:

您应该使用class - 属性。