06-09-22
簡單介紹
ID
與
name
的區別
http://5idev.net/javascript/ID/name/396656
l???????
id
就像身分證號,是唯一的,
name
就像姓名一樣可以同名
l???????
一個元素定義了
id
,引用該元素時直接用
id
屬性,而
name
通常用在
form
中,且必須由
document.form.***
而來,也就是說,
name
屬性定義的元素在腳本中是
document
對象的子對象。
l???????
name
用于
form
內元素,提交需要
id
用于
form
外元素好用因為
DOM
能直接取得單一元素
?
document.getElementById("id_Number")
得到的是單個元素
document.getElementsByName("name")
得到的是數組
?
l???????
id
每頁只能有一個
name
可以有多個
name
有些標簽不推薦用它
取得
id :document.getElementById("idname")
取得
name
:
document.getElementsByName("name")[0?1?2?3?....]
?
l???????
表單元素
(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
等等。
?
l???????
幾乎每個做過
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
的順序依次存在于數組中。