標籤中的name屬性和ID屬性的區別

編程這麼久,細想了一下,發現這個問題還不是很清楚,汗!看了幾篇文章,整理了一下,分享下!

      一個朋友如是的說到“ID就像是一個人的身份證號碼,而Name就像是他的名字,ID顯然是唯一的,而Name是可以重複的”我感覺很貼切!【但是太籠統哦,下面細細講一下!】具體的將“ID是Client端HTML元素的Identity。而Name其實要複雜的多,因爲Name有很多種的用途,所以它並不能完全由ID來代替,從而將其取消掉。”

       對於name,主要有一下用途:

(1)用途1: 作爲可與服務器交互數據的HTML元素的服務器端的標示,比如input、select、textarea、和button等。我們可以在服務器端根據其Name通過Request.Params取得元素提交的值。

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

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

(4)用途4: 作爲對象的Identity,如Applet、Object、Embed等元素。比如在Applet對象實例中,我們將使用其Name來引用該對象。
(5)用途5: 在IMG元素和MAP元素之間關聯的時候,如果要定義IMG的熱點區域,需要使用其屬性usemap,使usemap="#name"(被關聯的MAP元素的Name)。
   (6)用途6: 某些特定元素的屬性,如attribute,meta和param。例如爲Object定義參數<PARAM NAME = "appletParameter" VALUE = "value">或Meta中<META NAME = "Author" CONTENT = "Dave Raggett">。
    顯然這些用途都不是能簡單的使用ID來代替掉的,所以HTML元素的ID和Name的卻別並不是身份證號碼和姓名這樣的區別,它們更本就是不同作用的東西。

【就個人應用來講,感覺區別最大的地方是:name一般用於request“取值”,而id吧,在使用CSS樣式表時用得到】

有位仁兄如是說“id是控件的唯一標識符,服務器後臺用id不用name,客戶端用id和那麼都可以”【.net中的,貌似也有道理!】

還有這位仁兄:

1、我們知道在網頁做Post提交時,是以Form(即表單域)爲單位進行提交的,一個Form裏有若干個表單對象(如<input type="text" name="UserName" value="請輸入姓名"/>),同一個頁面裏可以爲多個Form(Asp.net不同,它只允許有一個,且名字必須爲Form1),在表單表提交到服務器端後,可以直接通過Name屬性取到表單域的值,卻無法通過ID直接取到該表表單對象的值。

   2、同一個Form裏不能有多個name屬性相同的HTML標記,但如果一個網頁中有多個Form,則不同的Form裏可以有同個Name屬性的標記。而ID是全局的,在一個HTML文檔裏不能有多個節點使用相同的ID,無論它處在哪個Form裏。

   3、在建立CSS樣式的時候,可以建立ID樣式表(以#爲前綴),使具有該ID的樣式直接應用該樣式,而無法建立Name樣式表。

   4、在進行網頁編輯時建議使用ID來標識一個節點,而不是使用Name(除非是爲了Post提交的需要),同樣使用Javascript進行Dom節點定位時建議使用getElementById方法,因爲只有ID能唯一標識一個節點,而同一個網頁裏可能會有多個Name屬性相同的節點,它們分別處在不同的Form裏。

發佈了107 篇原創文章 · 獲贊 22 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章