id和name是HTML中經(jīng)常用到的兩個屬性盏缤,對于這兩個屬性的使用,會有一些疑惑的地方纳猫,比如:
- id有什么用途?
- name有什么用途
- 什么情況下必須用id
- 什么情況下必須用name
- id和name有什么區(qū)別竹捉?
以下便是基于以上問題的解釋芜辕。
1. id 的用途
- id就是Client端HTML元素的Identity(標記),主要是在客戶端腳本(JavaScript)里用
- label與form控件的關(guān)聯(lián),如:
<label for="MyInput">My Input</label>
<input id="MyInput" type="text">
<label>
標簽的作用是為<input>
元素定義注釋
而<label>
標簽中的for 屬性值必須與相關(guān)元素的 id 屬性值相同块差。
- 腳本中獲得對象:IE支持在腳本中直接以id(而不是name)引用該id標識的對象侵续。
例如上面的input,要在腳本中獲得輸入的內(nèi)容憨闰,可以直接以 MyInput.value來獲得状蜗。如果用DOM的話,則用document.getElementById("MyInput").value鹉动;
- 在CSS中用于給HTML中的元素定義一個元素的獨特的樣式
#idName
{
屬性1:屬性值1轧坎;
屬性2:屬性值2
}
2. name 的用途
- 作為可與服務(wù)器交互數(shù)據(jù)的HTML元素的服務(wù)器端的標示,比如
input
训裆、select
眶根、textarea
、和button
等边琉。我們可以在服務(wù)器端根據(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元素之間關(guān)聯(lián)的時候,如果要定義IMG的熱點區(qū)域趴生,需要使用其屬性usemap阀趴,使
usemap="#name"
(被關(guān)聯(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 控件的關(guān)聯(lián) - CSS的元素選擇機制排霉,以#MyId的方式指定應(yīng)用樣式的元素窍株,不能用
name
替代 - 腳本中獲得對象: IE支持在腳本中直接以id(而不是name)引用該id標識的對象
4. 下列情況下必須用到name
- 表單(form)的控件名,提交的數(shù)據(jù)都用控件的name而不是id來控制攻柠。因為有許多name會同時對應(yīng)多個控件球订,比如checkbox和radio,而id必須是全文檔中唯一的瑰钮。此外瀏覽器會根據(jù)name來設(shè)定發(fā)送到服務(wù)器的request冒滩。因此如果用id,服務(wù)器是無法得到數(shù)據(jù)的浪谴。
- frame和window的名字开睡,用于在其他frame或window指定target
5. id 和 name 的區(qū)別
id-name.png