2010-01-06 111 views
0

這對我來說是一個驚喜,但我有一個簡單的表單,其中有3個字段。這些字段沒有「名稱」屬性。他們有一個「id」屬性。使用ID訪問表單元素

但是,我仍然可以做一個

var f = document.getElementsByTagName('form')[0]; 
alert(f.elementID); 

訪問該元素。我想以這種方式訪問​​表單元素,「name」屬性是必需的。

我找不到任何解釋的地方這樣的行爲。任何指針?

編輯:

我覺得這是對我的問題有些混亂。

我的表單字段沒有一個「name」屬性。他們有一個「身份證」。不過,我可以這樣做:

myform.elementId 

訪問them.The問題無關的getElementsByTagName用。

+2

或許,如果你刪除'getElementsByTagName'功能,因爲人們似乎認爲這就是你的困惑就在於你會得到更好的解釋。只要在你的例子'myform.foo'中加入一些東西,並問爲什麼'foo'即使不是'名字'也可以工作。 – slebetman

回答

4

getElementsByTagName返回給定標籤的所有元素。 (在你的情況下,所有<form>元素)

它不會返回所有具有name屬性的元素,因爲您似乎理解它。

在你的情況,你可以叫getElementById返回具有給定ID(單個)元素。


編輯:我想我誤解你的問題。

如果你問爲什麼,你仍然可以寫myform.elementId,這並使用元素的ID。

+1

@sLaks不會與元素名稱一起工作嗎?也許它適用於myform.elementName和myform.elementId – Rajat

4

您與getElementsByName混淆的getElementsByTagName。 TagName正在拾取<表格>,但名稱爲<表格名稱='XYZ'>。

+0

從我的理解,這不是他的問題。他的問題是爲什麼當'foo'是一個id,而不是名字時'form.foo'工作。 – slebetman

+0

@slebetman你是對的。這正是我的意思。 – Rajat

0

你不能使用

var f = document.getElementByID('some_id'); 
alert(f.value); 
+1

不,因爲它不是ID,表單元素沒有值屬性(除非它們包含名爲'value'的表單控件)。 – Quentin

+1

OP狀態:這些字段沒有「名稱」屬性。他們有一個「id」屬性。 ---這讓我假設他正在尋找基於其ID的表單元素。 – gnarf