我可以有一个ID为编号的div吗?
我可以有一个ID为数字的div吗?
例如<div id ="12" > </div>
我可以有一个ID为数字的div吗?
是的你可以。
仅由数字组成的id
值在HTML中完全有效 ; 任何东西,但空间是好的。 虽然较早的HTML规范更具限制性( ref , ref ),只需要一小部分字符并以字母开头,但浏览器从不关心,这是HTML5规范开放的重要部分。
如果你打算在CSSselect器中使用这些id
(例如,使用CSS来设置它们的样式,或者使用querySelector
, querySelectorAll
或像jQuery这样的使用CSSselect器的库来定位它们),请注意,这可能会很麻烦,因为你不能在字面上使用一个以id
开头的数字开头的id
; 你必须逃避它。 (例如, #12
是一个无效的CSSselect器;您必须将其编写为#\31\32
)因此,如果要使用CSSselect器,则可以使用字母开头。
为清楚起见,上面列出了这些链接:
- HTML5 – ID属性
- HTML4 – ID属性和ID和名称标记
- CSS 2.1的规则
下面是一个使用id
“12”的div
的例子,并用三种方式处理它:
- 用CSS
- 用JavaScript通过
document.getElementById
- 使用通过
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><div id="12">...</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/ 。 您可以在第一个字符之后使用数字,但是,例如a1
或theansweris42
。