2013-04-14 5 views
1

내 코드 :getElementByName이 유형 오류를 반환합니까?

var isSomethingChecked = (document.getElementByName("koalaCheck").checked || 
          document.getElementByName("kangarooCheck").checked); 

왜이 코드는 "유형의 오류"라는 예외가 발생합니까?

+0

getElementByName이 아마도 null을 반환하기 때문입니다. – zzzzBov

+0

예기치 않게 null 또는 정의되지 않은 값에 액세스하려고하면 TypeError가 가장 일반적으로 발생합니다. 생성자가 아닌 값에서 연산자를 사용하거나 너무 많은 인수를 내장 함수에 전달하는 경우 TypeError가 throw 될 수 있습니다. – 999k

+0

@zzzzBov 또는 메서드가 존재하지 않기 때문에 ... – Ian

답변

6

getElementByName이라는 기능이 없습니다. 필요한 것은 getElementsByName이고 그 이름을 가진 모든 요소의 배열을 리턴합니다. 그래서 당신은 사용할 수 있습니다

var isSomethingChecked = (document.getElementsByName("koalaCheck")[0].checked ||  
         document.getElementsByName("kangarooCheck")[0].checked); 
+0

변경 한 내용에 대한 약간의 설명이 유용 할 것입니다. – jfriend00

+0

@ jfriend00 done! –

+0

이렇게 할 수 있습니까? var isSomethingChecked = (document.getElementsByName ("koalaCheck", "kangarooCheck") 체크) – jth41

3

올바른 방법은 document.getElementsByName()이기 때문입니다. 당신은 s를 놓쳤습니다.

보기 documentation.

요소 당 각 선택된 상태를 검사하지 않으려는 경우 (이 메서드는 배열을 반환 함) .. 나는 document.getElementById()을 사용할 것입니다.하지만 html을 보지 않으면됩니다.

+0

왜 투표가 중단 될까요? – Daedalus

+1

그리고'getElementsByName()'은 하나의 원소가 아닌 배열을 반환합니다. 나는 다운 보봇 (downvote)을하지 않았지만, 당신은 대답의 일부만을 가지고있었습니다. – jfriend00

+0

@ jfriend00 메모 해 주셔서 감사합니다. 그 점에 관해서는 메모를 남기도록 편집했습니다. html이나 의도 된 동작을 보지 않고서는 아무것도 더 이상 어둠 속에서 촬영할 것이라고 생각하지 않습니다. – Daedalus

0

getElementsByName는 지정된 이름을 가지는 모든 요소의 배열을 반환합니다. 당신과 같이 반환 된 배열에서 특정 요소를 getElementById 기능을 사용하거나 지정해야합니다 중 하나

var isSomethingChecked = (document.getElementsByName("koalaCheck")[0].checked || document.getElementsByName("kangarooCheck")[0].checked); 

당신은 "입력 오류"얻을 당신이 배열 대신 특정 요소의 체크 여부를 확인하기 때문에.

관련 문제