id和name是HTML中經(jīng)常用到的兩個屬性,對于這兩個屬性的使用,會有一些疑惑的地方,比如:
- id有什么用途?
- name有什么用途
- 什么情況下必須用id
- 什么情況下必須用name
- id和name有什么區(qū)別?
以下便是基于以上問題的解釋。
1. id 的用途
- id就是Client端HTML元素的Identity(標記),主要是在客戶端腳本(JavaScript)里用
- label與form控件的關聯(lián),如:
<label for="MyInput">My Input</label>
<input id="MyInput" type="text">
<label>標簽的作用是為<input>元素定義注釋
而<label>標簽中的for 屬性值必須與相關元素的 id 屬性值相同。
- 腳本中獲得對象:IE支持在腳本中直接以id(而不是name)引用該id標識的對象。
例如上面的input,要在腳本中獲得輸入的內(nèi)容,可以直接以 MyInput.value來獲得。如果用DOM的話,則用document.getElementById("MyInput").value; - 在CSS中用于給HTML中的元素定義一個元素的獨特的樣式
#idName
{
屬性1:屬性值1;
屬性2:屬性值2
}
2. name 的用途
- 作為可與服務器交互數(shù)據(jù)的HTML元素的服務器端的標示,比如
input、select、textarea、和button等。我們可以在服務器端根據(jù)其Name通過Request.Params取得元素提交的值。 - HTML元素
Input type='radio'分組,我們知道radio button控件在同一個分組類,check操作是mutex的,同一時間只能選中一個radio,這個分組就是根據(jù)相同的Name屬性來實現(xiàn)的。 - 建立頁面中的錨點,我們知道<a href="URL">link</a>是獲得一個頁面超級鏈接,如果不用href屬性,而改用Name,如:
<a name="PageBottom"></a>,我們就獲得了一個頁面錨點。 - 作為對象的Identity,如Applet、Object、Embed等元素。比如在Applet對象實例中,我們將使用其Name來引用該對象。
- 在IMG元素和MAP元素之間關聯(lián)的時候,如果要定義IMG的熱點區(qū)域,需要使用其屬性usemap,使
usemap="#name"(被關聯(lián)的MAP元素的Name)。 - 某些特定元素的屬性,如attribute,meta和param。例如為Object定義參數(shù)
<PARAM NAME = "appletParameter" VALUE = "value">或Meta中<META NAME = "Author" CONTENT = "Dave Raggett">。
3. 下列情況必須用到id
-
<label>與 form 控件的關聯(lián) - CSS的元素選擇機制,以#MyId的方式指定應用樣式的元素,不能用
name替代 - 腳本中獲得對象: IE支持在腳本中直接以id(而不是name)引用該id標識的對象
4. 下列情況下必須用到name
- 表單(form)的控件名,提交的數(shù)據(jù)都用控件的name而不是id來控制。因為有許多name會同時對應多個控件,比如checkbox和radio,而id必須是全文檔中唯一的。此外瀏覽器會根據(jù)name來設定發(fā)送到服務器的request。因此如果用id,服務器是無法得到數(shù)據(jù)的。
- frame和window的名字,用于在其他frame或window指定target
5. id 和 name 的區(qū)別

id-name.png