哪些DOM元素不能接受id?

Ran*_*lue 14 html html5 dom

我正在阅读这个关于canvas元素的基础教程.在(almost)下面的一句话引起了我的注意:

id属性不是特定于元素,而是可以应用于(几乎)每个HTML元素的默认HTML属性之一

哪个html元素不能接受id?

Den*_*ret 14

来自w3schools(是的,我知道......):

注意:id属性是不正确的:<base>,<head>,<html>, <meta>,<param>,<script>,<style>,和<title>.

请注意,这仅适用于HTML4,但这解释了本教程的"几乎".

正如其他人所指出的,HTML5在所有元素上都接受id.

  • 在这个特定的问题中,w3school在两个帐户上是错误的:它没有指定它的语句适用于HTML 4.01(不是XHTML 1.0或HTML5); 并且它错误地声称`param`不允许`id`,因为它甚至在HTML 4.01中也是如此. (11认同)
  • 这是我曾经投票的唯一一个包含w3schools的答案. (7认同)
  • "HTML5规范声明可以在所有HTML元素上指定全局属性,甚至是HTML5未指定的HTML元素." https://developer.mozilla.org/en/HTML/Global_attributes (2认同)
  • w3schools因为他们在搜索引擎优化方面对W3C进行了抨击,并且因为他们并不总是充分校对他们的东西以确保它是正确的.他们的许多文章都被认为是过度简化的,特别是那些在SQL语句中使用字符串连接而不是参数的文章(使得它们的示例易受SQL注入攻击). (2认同)
  • 你可能只是制作历史,其中包含"w3schools"的"不错的答案". (2认同)

ani*_*son 13

HTML5中,id属性是全局属性,可以在任何元素上指定.


如果查看HTML4文档类型声明,可以找到%attrs;其属性列表中未定义的元素,以指示它们不支持该id属性.这些问题包括附近的"文件头"部分中的底部:HEAD,TITLE,BASE,META,STYLE,SCRIPT,和HTML.

请注意,虽然PARAM元素%attrs;在其属性列表中不包含声明,但它确实允许该id列表中的属性本身.

<!ATTLIST PARAM
  id          ID             #IMPLIED  -- document-wide unique id --
  name        CDATA          #REQUIRED -- property name --
  value       CDATA          #IMPLIED  -- property value --
  valuetype   (DATA|REF|OBJECT) DATA   -- How to interpret value --
  type        %ContentType;  #IMPLIED  -- content type for value
                                      when valuetype=ref --
  >
Run Code Online (Sandbox Code Playgroud)