document.getElementById與getElementsByName的區別(JavaScript)

來源:互聯網
上載者:User

1:id   就像身分證號,是唯一的,name就像姓名一樣可以同名  

2:一個元素定義了   id,引用該元素時直接用 id 屬性,而   name   通常用在   form   中,且必須由   document.form.***   而來,也就是說, name 屬性定義的元素在指令碼中是 document 對象的子物件。  

3:name 用於 form 內元素,提交需要  

id   用於   form   外元素好用因為   DOM   能直接取得單一元素  
document.getElementById( "id_Number ")   得到的是單個元素  
document.getElementsByName( "name ")   得到的是數組  

4:id   每頁只能有一個  
name   可以有多個  
name   有些標籤不推薦用它  

取得   id   :document.getElementById( "idname ")  
取得   name   :   document.getElementsByName( "name ")[0?1?2?3?....]  

5: 表單元素   (form   input   textarea   select)   與架構元素   (iframe   frame)   用   name  

這些元素都與表單   (   架構元素作用於   form   的   target)   提交有關   ,   在表單的接收頁面只 
接收有   name   的元素   ,   賦   ID   的元素通過表單是接收不到值的   ,   你自己可以驗證一下   .  
有一個例外   :   A   可以賦   name   作為錨點   ,   也可以賦   ID   ;   

只能賦   ID   不能賦   name   的元素     除去與表單相關的元素都只能賦   ID)  
body   li   table   tr   td   th   p   div   span   pre   dl   dt   dd   font   b   等等。  

6:幾乎每個做過   Web   開發的人都問過,到底元素的   ID   和   Name   有什麼區別阿?為什麼有了   ID   還要有   Name   呢   ?   而同樣我們也可以得到最   classical   的答案:   ID   就像是一個人的社會安全號碼碼,而   Name   就像是他的名字,   ID   顯然是唯一的,而   Name   是可以重複的。  

  上周我也遇到了   ID   和   Name   的問題,在頁面裡輸入了一個   input   type= "hidden "   ,唯寫了一個   ID= 'SliceInfo '   ,賦值後   submit   ,在後台用   Request.Params[ "SliceInfo "]   卻怎麼也去不到值。後來恍然大悟因該用   Name   來標示,於是在   input   裡加了個   Name= 'SliceInfo '   ,就一切   ok   了。  

   第一段裡對於   ID   和   Name   的解答說的太籠統了,當然那個解釋對於   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   來代替掉的,所以   HTML   元素的   ID   和   Name   的卻別並不是社會安全號碼碼和姓名這樣的區別,它們更本就是不同作用的東西。  
  當然   HTML   元素的   Name   屬性在頁面中也可以起那麼一點   ID   的作用,因為在   DHTML   對象樹中,我們可以使用   document.getElementsByName   來擷取一個包含頁面中所有指定   Name   元素的對象數組。 
  在這裡順便說一下,要是頁面中有   n(n> 1)   個   HTML   元素的   ID   都相同了怎麼辦?在   DHTML   對象中怎麼引用他們呢?如果我們使用   ASPX   頁面,這樣的情況是不容易發生的,因為   aspnet   進程在處理   aspx   頁面時根本就不允許有   ID   非唯一,這是頁面會被拋出異常而不能被正常的   render   。要是不是動態網頁面,我們硬要讓   ID   重複那   IE   怎麼搞呢?  
  這個時候我們還是可以繼續使用   document.getElementById   擷取對象,只不過我們只能擷取   ID   重複的那些對象中在   HTML   Render   時第一個出現的對象。而這時重複的   ID   會在引用時自動變成一個數組,   ID   重複的元素按   Render   的順序依次存在於數組中。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.