06-09-22
簡(jiǎn)單介紹
ID
與
name
的區(qū)別
http://5idev.net/javascript/ID/name/396656
l???????
id
就像身分證號(hào),是唯一的,
name
就像姓名一樣可以同名
l???????
一個(gè)元素定義了
id
,引用該元素時(shí)直接用
id
屬性,而
name
通常用在
form
中,且必須由
document.form.***
而來(lái),也就是說(shuō),
name
屬性定義的元素在腳本中是
document
對(duì)象的子對(duì)象。
l???????
name
用于
form
內(nèi)元素,提交需要
id
用于
form
外元素好用因?yàn)?/span>
DOM
能直接取得單一元素
document.getElementById("id_Number")
得到的是單個(gè)元素
document.getElementsByName("name")
得到的是數(shù)組
l???????
id
每頁(yè)只能有一個(gè)
name
可以有多個(gè)
name
有些標(biāo)簽不推薦用它
取得
id :document.getElementById("idname")
取得
name
:
document.getElementsByName("name")[0?1?2?3?....]
l???????
表單元素
(form input textarea select)
與框架元素
(iframe frame)
用
name
這些元素都與表單
(
框架元素作用于
form
的
target)
提交有關(guān)
,
在表單的接收頁(yè)面只
接收有
name
的元素
,
賦
ID
的元素通過(guò)表單是接收不到值的
,
你自己可以驗(yàn)證一下
.
有一個(gè)例外
: A
可以賦
name
作為錨點(diǎn)
,
也可以賦
ID
;
只能賦
ID
不能賦
name
的元素
:(
除去與表單相關(guān)的元素都只能賦
ID)
body li table tr td th p div span pre dl dt dd font b
等等。
l???????
幾乎每個(gè)做過(guò)
Web
開(kāi)發(fā)的人都問(wèn)過(guò),到底元素的
ID
和
Name
有什么區(qū)別阿?為什么有了
ID
還要有
Name
呢
?
而同樣我們也可以得到最
classical
的答案:
ID
就像是一個(gè)人的身份證號(hào)碼,而
Name
就像是他的名字,
ID
顯然是唯一的,而
Name
是可以重復(fù)的。
上周我也遇到了
ID
和
Name
的問(wèn)題,在頁(yè)面里輸入了一個(gè)
input type="hidden"
,只寫(xiě)了一個(gè)
ID='SliceInfo'
,賦值后
submit
,在后臺(tái)用
Request.Params["SliceInfo"]
卻怎么也去不到值。后來(lái)恍然大悟因該用
Name
來(lái)標(biāo)示,于是在
input
里加了個(gè)
Name='SliceInfo'
,就一切
ok
了。
第一段里對(duì)于
ID
和
Name
的解答說(shuō)的太籠統(tǒng)了,當(dāng)然那個(gè)解釋對(duì)于
ID
來(lái)說(shuō)是完全對(duì)的,它就是
Client
端
HTML
元素的
Identity
。而
Name
其實(shí)要復(fù)雜的多,因?yàn)?/span>
Name
有很多種的用途,所以它并不能完全由
ID
來(lái)代替,從而將其取消掉。
具體用途有:
用途
1:?
作為可與服務(wù)器交互數(shù)據(jù)的
HTML
元素的服務(wù)器端的標(biāo)示,比如
input
、
select
、
textarea
、和
button
等。我們可以在服務(wù)器端根據(jù)其
Name
通過(guò)
Request.Params
取得元素提交的值。
用途
2:? HTML
元素
Input type='radio'
分組,我們知道
radio button
控件在同一個(gè)分組類,
check
操作是
mutex
的,同一時(shí)間只能選中一個(gè)
radio
,這個(gè)分組就是根據(jù)相同的
Name
屬性來(lái)實(shí)現(xiàn)的。
用途
3:?
建立頁(yè)面中的錨點(diǎn),我們知道
<a href="URL">link</a>
是獲得一個(gè)頁(yè)面超級(jí)鏈接,如果不用
href
屬性,而改用
Name
,如:
<a name="PageBottom"></a>
,我們就獲得了一個(gè)頁(yè)面錨點(diǎn)。
用途
4:?
作為對(duì)象的
Identity
,如
Applet
、
Object
、
Embed
等元素。比如在
Applet
對(duì)象實(shí)例中,我們將使用其
Name
來(lái)引用該對(duì)象。
用途
5:?
在
IMG
元素和
MAP
元素之間關(guān)聯(lián)的時(shí)候,如果要定義
IMG
的熱點(diǎn)區(qū)域,需要使用其屬性
usemap
,使
usemap="#name"(
被關(guān)聯(lián)的
MAP
元素的
Name)
。
用途
6:?
某些特定元素的屬性,如
attribute
,和
param
。例如為
Object
定義參數(shù)
<PARAM NAME = "appletParameter" VALUE = "value">
。
顯然這些用途都不是能簡(jiǎn)單的使用
ID
來(lái)代替掉的,所以
HTML
元素的
ID
和
Name
的卻別并不是身份證號(hào)碼和姓名這樣的區(qū)別,它們更本就是不同作用的東西。
當(dāng)然
HTML
元素的
Name
屬性在頁(yè)面中也可以起那么一點(diǎn)
ID
的作用,因?yàn)樵?/span>
DHTML
對(duì)象樹(shù)中,我們可以使用
document.getElementsByName
來(lái)獲取一個(gè)包含頁(yè)面中所有指定
Name
元素的對(duì)象數(shù)組。
在這里順便說(shuō)一下,要是頁(yè)面中有
n(n>1)
個(gè)
HTML
元素的
ID
都相同了怎么辦?在
DHTML
對(duì)象中怎么引用他們呢?如果我們使用
ASPX
頁(yè)面,這樣的情況是不容易發(fā)生的,因?yàn)?/span>
aspnet
進(jìn)程在處理
aspx
頁(yè)面時(shí)根本就不允許有
ID
非唯一,這是頁(yè)面會(huì)被拋出異常而不能被正常的
render
。要是不是動(dòng)態(tài)頁(yè)面,我們硬要讓
ID
重復(fù)那
IE
怎么搞呢?
這個(gè)時(shí)候我們還是可以繼續(xù)使用
document.getElementById
獲取對(duì)象,只不過(guò)我們只能獲取
ID
重復(fù)的那些對(duì)象中在
HTML Render
時(shí)第一個(gè)出現(xiàn)的對(duì)象。而這時(shí)重復(fù)的
ID
會(huì)在引用時(shí)自動(dòng)變成一個(gè)數(shù)組,
ID
重復(fù)的元素按
Render
的順序依次存在于數(shù)組中。
haha ,so happy to see a comment.you are the first reader for my java blog.thank you