2010-01-06 70 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