2010-01-06 7 views
0

이것은 놀라운 일이지만 3 필드가있는 간단한 양식이 있습니다. 필드에는 "이름"속성이 없습니다. 대신에 "id"속성이 있습니다.ID를 사용하여 양식 요소 액세스

그러나. 나는 여전히 요소를 액세스 할 수 있습니다.

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

요소에 액세스 할 수 있습니다. 그런 식으로 양식 요소에 액세스 할 생각, "이름"속성이 필요합니다.

그런 동작에 대한 설명을 찾을 수 없습니다. 어떤 포인터?

편집 :

내 질문에 대한 약간의 혼동이있다 생각합니다.

내 양식 필드에 "이름"속성이 없습니다. 그들은 "이드"를 가지고 있습니다. 그럼에도 불구하고, 나는이 작업을 수행 할 수 있습니다

myform.elementId 

인데 말야 질문에 액세스 할 수 getElementsByTagName과는 아무 상관이 없습니다.

+2

를 사용할 수 없습니다. 그냥 당신의 예제'myform.foo' 또는 뭔가를 넣고'foo'가 '이름'이 아닌데 왜 작동하는지 질문하십시오. – slebetman

답변

4

getElementsByTagName은 지정된 태그의 모든 요소를 ​​반환합니다. (귀하의 경우 모두 <form> 요소)

이해가가는 것 같아서 name 속성을 가진 요소를 모두 반환하지는 않습니다.

경우에 따라 getElementById을 호출하여 지정된 ID가있는 (단일) 요소를 반환 할 수 있습니다.


편집 : 내가 질문을 오해 것 같아요.

여전히 myform.elementId으로 쓸 수있는 이유는 요소 ID를 사용하는 것입니다.

+1

@sLaks가 요소 이름으로 작동하지 않습니까? 어쩌면 그것은 myform.elementName과 myform.elementId 모두에서 작동합니다. – Rajat

4

getElementsByTagName과 getElementsByName을 혼동하고 있습니다. TagName은 < 양식 >을 선택했지만 이름은 < 양식 이름 = 'XYZ'입니다.

+0

제 생각에, 그것은 그의 질문이 아닙니다. 그의 질문은'foo'가 id가 아닌'form.foo'가 작동하는 이유입니다. – slebetman

+0

@slebetman 당신 말이 맞아요. 그것이 바로 내가 의미하는 바입니다. – Rajat

0

당신은 사람들이 혼란 거짓말 곳이 생각하는 것 때문에 당신이`getElementsByTagName` 기능을 제거하면 아마도 당신은 더 나은 설명을 얻을 것

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

아니요. ID가 아니고 양식 요소에 value 속성이 없습니다 ('value'라는 폼 컨트롤이 포함되어 있지 않은 경우). – Quentin

+1

OP 상태 : 필드에 "이름"속성이 없습니다. 대신에 "id"속성이 있습니다. --- 이것은 그가 자신의 ID를 기반으로 양식 요소를 얻으려고한다고 가정합니다. – gnarf

관련 문제