我可以有一个ID为编号的div吗?

我可以有一个ID为数字的div吗?

例如<div id ="12" > </div>

我可以有一个ID为数字的div吗?

是的你可以。

仅由数字组成的id值在HTML中完全有效 ; 任何东西,但空间是好的。 虽然较早的HTML规范更具限制性( ref , ref ),只需要一小部分字符并以字母开头,但浏览器从不关心,这是HTML5规范开放的重要部分。

如果你打算在CSSselect器中使用这些id (例如,使用CSS来设置它们的样式,或者使用querySelectorquerySelectorAll或像jQuery这样的使用CSSselect器的库来定位它们),请注意,这可能会很麻烦,因为你不能在字面上使用一个以id开头的数字开头的id ; 你必须逃避它。 (例如, #12是一个无效的CSSselect器;您必须将其编写为#\31\32 )因此,如果要使用CSSselect器,则可以使用字母开头。

为清楚起见,上面列出了这些链接:

  • HTML5 – ID属性
  • HTML4 – ID属性和ID和名称标记
  • CSS 2.1的规则

下面是一个使用id “12”的div的例子,并用三种方式处理它:

  1. 用CSS
  2. 用JavaScript通过document.getElementById
  3. 使用通过document.querySelector JavaScript(在支持它的浏览器上)

它适用于我曾经扔过的每个浏览器(参见下面的代码清单)。 现场示例:

 (function() { "use strict"; document.getElementById("12").style.border = "2px solid black"; if (document.querySelector) { document.querySelector("#\\31\\32").style.fontStyle = "italic"; display("The font style is set using JavaScript with <code>document.querySelector</code>:"); display("document.querySelector(\"#\\\\31\\\\32\").style.fontStyle = \"italic\";", "pre"); } else { display("(This browser doesn't support <code>document.querySelector</code>, so we couldn't try that.)"); } function display(msg, tag) { var elm = document.createElement(tag || 'p'); elm.innerHTML = String(msg); document.body.appendChild(elm); } })(); 
 #\31\32 { background: #0bf; } pre { border: 1px solid #aaa; background: #eee; } 
 <div id="12">This div is: <code>&lt;div id="12">...&lt;/div></code> </div> <p>In the above:</p> <p>The background is set using CSS:</p> <pre>#\31\32 { background: #0bf; }</pre> <p>(31 is the character code for 1 in hex; 32 is the character code for 2 in hex. You introduce those hex character sequences with the backslash, <a href="http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier">see the CSS spec</a>.)</p> <p>The border is set from JavaScript using <code>document.getElementById</code>:</p> <pre>document.getElementById("12").style.border = "2px solid black";</pre> 

从HTML 5规格 …

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

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

身份证可以采用什么forms没有其他限制; 特别是ID可以只包含数字,以数字开头,以下划线开头,只包含标点符号等。

元素的唯一标识符可以用于多种用途,特别是作为一种使用片段标识符链接到文档的特定部分的方式,作为在脚本编写时针对元素的方式,以及作为从特定元素CSS。

标识符是不透明的string。 特定的含义不应该从id属性的值中派生出来。

所以…是的:)

从HTML 4.01规范 …

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

所以不行 :(

从可维护性angular度来看,这是一个坏主意。 身份证应至less有点描述他们代表什么。 用有意义的东西加以前缀以符合其他人已经回答的内容。 例如:

 <div id ="phoneNumber_12" > </div> 

您也可以通过执行以下操作来select该types的ID(尽pipe创build此类ID以数字开头绝对不是最佳做法):

 document.querySelector('div[id="12"]'); //or document.querySelectorAll('div[id="12"]'); //if you have multiple elements with equal ID. 

正如其他答复所指出的,答案在技术上是:

 ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). 

但是,实际上,如果您希望您的文档能够与各种浏览器,CSS编辑器和JavaScript框架一起工作,那么您将受到更多的限制。

正如其他答复中所述,jQuery在包含句点和冒号的id方面存在问题。

一个更微妙的问题是,一些浏览器已经被误认为是区分大小写的id属性值。 这意味着,如果您在CSS(大写'F')中的HTML(小写字母'f')和.FirstName {color:red}中inputid =“firstName”,那么错误的浏览器将不会设置元素颜色变红。 因为这两个定义都使用有效的字符作为id,所以您将不会收到来自validation工具的错误。

你可以严格遵守命名约定来避免这些问题。 例如,如果您完全限定为小写字母,并且始终用连字符或下划线分隔单词(但不能同时select一个而不使用另一个),那么您将拥有一个易于记忆的模式。 你永远不会怀疑“是名字还是名字?” 因为你总是知道你应该inputfirst_name。

同样的问题已经问了

什么是HTML中的id属性的有效值?

虽然TJ Crowder的答案在概念上是好的,但它不适用于后代CSSselect器。

然而,只有第一个字符后跟空格才能工作(如在Chrome 49上)

假设以下HTML片段:

 <td id="123456"> <div class="blah"> <div class="yadah">play that funky music</div> </div> </td> 

以下声明:

 document.querySelector("#\\31 23456 .blah .yadah").style.fontStyle = "italic"; 

正确地播放那些时髦的音乐

不,它必须以一封信开头。 请参阅http://www.electrictoolbox.com/valid-characters-html-id-attribute/ 。 您可以在第一个字符之后使用数字,但是,例如a1theansweris42