HTML中ID與NAME的區別

Web開發者發表於2011-12-10

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

上面一段對於ID和Name的解答說的太籠統了,以下我們來具體探討一下。

一、name和id 都可以用來呼叫html中的元素

當我們需要在指令碼里訪問頁面內一個html元素的時候,一般都是通過指定HTML元素的id或name

WEB標準下可以通過getElementById() 、getElementsByName() 、 getElementsByTagName()訪問HTML文件中的任一個元素。

要訪問某一特定元素儘量用標準的document.getElementById(id)。

如果一個文件中有兩個以上的標籤NAME相同,那麼document.getElementsByName(name)就可以取得這些元素組成一個陣列。

訪問標籤則用標準的document.getElementByTagName(tag)。

注意:id 標識的是大小寫敏感的,而name基本上沒有什麼要求,甚至可以用數字。

二、什麼情況下必須用name?

1、表單元素(例如:form、input、textarea、select 、button 等)通常與表單提交有關,在表單的接收頁面只接收有name的元素,賦id的元素通過表單是接收不到值的。

2、表單元素核取方塊checkbox、單選按鈕 radio 通常會對應多個控制元件,這時必須用name屬性來實現分組。同一組使用同一個name。使兩個題目的選項之間不產生干擾。

3、框架元素(iframe、frame)的名字,用於在其他iframe、frame指定target。

4、建立頁面中的錨點,我們知道<a href="URL">link</a>是獲得一個頁面超級連結,如果不用href屬性,而改用name,如:<a name="pageTop"></a>,我們就獲得了一個頁面錨點。

5、在IMG元素和MAP元素之間關聯的時候,如果要定義IMG的熱點區域,需要使用其屬性usemap,使usemap="#name"(被關聯的MAP元素的name)。

6、某些特定元素的屬性,如attribute,meta和param。例如為Object定義引數<PARAM NAME = "appletParameter" VALUE = "value">或Meta中<META NAME = "Author" CONTENT = "Admin10000.com">

三、什麼情況下必須用id ?

1、label與form控制元件的關聯。例如:

<label for="myInput">文字錄入框</label>
<input id="myInput" type="text" />

2、id 可以用來設定一個css樣式。例如:

<style type="text/css">
#my
{
      font-size: 12px;
      color: red;
}
</style>
<div id="my">設定字型大小和顏色</div>

相關文章