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
的順序依次存在于數組中。
haha ,so happy to see a comment.you are the first reader for my java blog.thank you