html裏id和name的異同

id與name的做用,做爲標籤的標識符,基本上是同樣的。html

name是老方法,id是在name基礎上發明的,比name「現代化」一點,用的範圍廣一點數據庫

<...>中的name原來(剛發明時)就是用於本頁按一下轉向過去用的。瀏覽器

通常認爲:ID就像是一我的的身份證號,顯然是惟一的。服務器

而name就像是他的名字,而name是能夠重複的。app

 

ID和name問題描述:spa

在頁面裏輸入了一個input type="hidden",只寫了一個id="Wxinfo",賦值後submit,翻譯

在後臺用Request.Params["Wxinfo"]卻怎麼也找不到值。後來明白緣由用nameorm

來標示,因而在input里加了一個name="Wxinfo",就能夠了。htm

 

第一段裏對id和name的解說有點籠統,但它對id來講是徹底對的,他就是Client端對象

html元素的Identity。而name其實要複雜的多,由於name有不少用途,因此它並不能徹底由ID來代替。

name的具體用途有:

一、做爲可與服務器交互數據的HTML元素的服務器短的標識,好比input,select,button等

咱們能夠在服務器端根據Name經過Request.Parems取得元素提交的值。

二、HTML元素Input type="radio"分組,咱們知道radio button控件在同一個分組類

check操做是mutex的,同一時間只能選中一個radio,這個分組就是根據相同的name屬性來實現的。

三、創建頁面中的錨點,咱們知道<a href="URl">link</a>得到一個頁面超連接,若是不用href

屬性而改用Name,如<a name="PageBottom"></a>,咱們就得到了一個頁面錨點。

四、做爲對象的Identity,如Applet、Object、Embed等元素,好比在Applet對象實例中

咱們將使用Name來引用對象。

五、在IMG元素與MAP元素之間關聯的時候,若是要定義IMG的熱點區域,須要使用其

屬性usemap 使用usemap="#name"(被關聯的MAP元素的Name)

六、某些特定元素的屬性,如attribute、meta和param.例如爲Object定義參數

<PARAM NAME="appletParameter" VALUE="value">或Meta中

<META NAME="Author" CONTENT="Dave Raggett">.

以上的用途都不能簡單的使用ID來代替,因此HTML元素的ID和Name的卻別並非身份證號碼和姓名這樣的區別,它們更本就是不一樣做用的東西。 ----------------------------------------------------------------------------------------- 除 BASE, HEAD, HTML, META, SCRIPT, STYLE, TITLE 標籤外,id 均可用.

name只用於APPLET,SELECT,FORM,FRAME,IFRAME,IMG,A,INPUT,OBJECT,MAP,PARAM,META. (name有時有本身的用途)

table 中 name 無定義, 應當用 id.

有些標籤,能夠同時有name和id。

在一個HTML網頁中,id是惟一的。

 

id 在HTML中的做用:

(1) 用id選擇相應的style sheet(風格).

(2) <A ..> 連接的目的地

(3) 腳本語言用它找目的地(找該id的標籤)

(4) 做爲名字,用於聲明某OBJECT element

(5) 做爲一個標籤或塊的區分標緻(用於從HTML網頁中取出數據放入數據庫或把HTML翻譯成別的格式,等狀況).

(參考HTML 4.0 定義)

name原來是爲了標識之用,可是如今根據規範,都建議用id來標識元素。

 

如下只能用name:

1. 表單(form)的控件名,提交的數據都用控件的name而不是id來控制。

     由於有許多name會同時對應多個控件,好比 checkbox和radio,而id必須是全文檔中惟一的。

     此外瀏覽器會根據name來設定發送到服務器的request。

     所以若是用id,服務器是無 法獲得數據的。

 2. frame和window的名字,用於在其餘frame或window指定target。

 

如下只能用id:

1. label與form控件的關聯, <label for="MyInput">My Input</label> <input id="MyInput" type="text">

          for屬性指定與label關聯的元素的id,不可用name替代。 

2. CSS的元素選擇機制,以#MyId的方式指定應用樣式的元素,不能用name替代。

3. 腳本中得到對象: IE支持在腳本中直接以id(而不是name)引用該id標識的對象。

          例如上面的input,要在腳本中得到輸入的內容,能夠直接以 MyInput.value來得到。

          若是用DOM的話,則用document.getElementById("MyInput").value,

          若是要用name的話,一般先獲得包含控件的form,例如 document.forms[0],而後從form再引用name,

          注意這樣獲得的是通過計算後將發送給服務器的值。

name與id的其餘區別是: id要符合標識的要求,好比大小寫敏感,最好不要包含下劃線(由於不兼容CSS)。而name基本上沒有什麼要求,甚至能夠用數字 。

用CSS控制這個連接的停留樣式,
能夠這樣寫 #m_blog div .opt a:hover{color:#D57813} 或 #myLink:hover{color:#D57813}
NAME主要應用在交互式網頁,表單提交給某個服務器端腳本後接收變處理量使用。從源代碼的規範性和兼容性角度出發,如在客戶端
腳本里要索引某個對象,建議用document.getElementById()方法,儘可能不要直接使用NAME的值

 

文轉自http://wenku.baidu.com/view/a3fcdc976bec0975f465e2c4.html。

相關文章
相關標籤/搜索