在開版時主要處理的都是 ID 與 Class 命名,但對 JS 來說確還有著 name="命名" 來做不同功能與規畫,找了資料比較一下。


資料中提到 ID 和 Name 的問題
頁面裡輸入了一個 input type=”hidden”,只寫了一個 ID=’SliceInfo’,賦值後 submit,在後台用 Request.Params[“SliceInfo”] 卻怎麼也去不到值。後來恍然大悟因該用 Name 來標示,於是在 input裡加了個 Name=’SliceInfo’,就一切ok了。

對於ID來說是完全對的,它就是Client端HTML元素的Identity。而Name其實要複雜的多,因為Name有很多種的用途,所以它並不能完全由ID來代替,從而將其取消掉。


實際用途

用途1
作為可與伺服器交互資料的 HTML 元素的伺服器端的標示,比如 input、select、textarea、和 button等。我們可以在伺服器端根據其 Name 通過 Request.Params 取得元素送出的值。

用途2
HTML 元素 Input type='radio' 分組,我們知道radio button控件在同一個分組類,check 操作是 mutex的,同一時間只能選中一個 radio,這個分組就是根據相同的Name屬性來實現的。

用途3
建立頁面中的錨點,我們知道 <a href="URL">link</a> 是獲得一個頁面超級連結,如果不用href屬性,而改用Name,如: <a name="PageBottom"></a>,我們就獲得了一個頁面錨點。

用途4
作為對象的Identity,如Applet、Object、Embed等元素。比如在Applet對像實例中,我們將使用其Name來引用該對象。

用途5
在 IMG 元素和 MAP 元素之間關聯的時候,如果要定義 IMG 的熱點區域,需要使用其屬性 usemap,使usemap=”#name”(被關聯的 MAP 元素的 Name )。

用途6
某些特定元素的屬性,如 attribute,和 param。例如為 Object 定義參數 <PARAM NAME = "appletParameter" VALUE = "value">


部分狀況下 id 和 name 是可以互通的部分狀況下 id 和 name 是可以互通的,但是其根本的定義可以讓我們很容易分辨其差別:

name
是識別網頁上某個控制項的名稱,這些控制項多半都是 Windows 或 IE 內建的物件,
例如 Frame(其實就是 IE 瀏覽器物件)、TextArea(系統內建物件)、 URI 物件(IE 內建物件)等等。牽涉到 name 的動作,多半都是資料的傳輸或是連結的開啟等等。

id
是識別網頁上某個 DHTML 物件的名稱,對象是所有的 HTML 元件。牽涉到 id 的動作,多半是做動態效果的控制之用。


資料來源:
細說HTML元素的ID和Name屬性的區別