程式設計這麼久,細想了一下,發現這個問題還不是很清楚,汗!看了幾篇文章,整理了一下,分享下!
一個朋友如是的說到“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" target="_blank" rel="external nofollow" >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裡。