2012-04-11 4 views
1
var formobj = document.h1; 
for (var j = 0; j < formobj.elements.length; j++) { 
    if (formobj.elements[j].type == "radiobutton" && formobj.elements[j].checked) { 
     var wholebase = formobj.elements[j].value; 
    } 
} 

나중에 스크립트에서 변수는 div의 내부 html로 설정되고 정의되지 않은 레이블이 지정됩니다. for 루프에 결함이 있습니까?For 루프는 정의되지 않은 변수를 반환합니다.

+2

어떤 변수가 "변수"입니까? –

+0

@James 몬스터 전체베이스. – Wilson

+5

@JesusSqueegee 'radiobutton'대신 'radio'가되어서는 안됩니까? – loganfsmyth

답변

1

, 난 당신이 type == 'radio'을 원하는 생각합니다.

-1

wholesale 변수가 내부 범위 내에 정의되어 있습니다. 이 범위를 벗어나면 변수는 더 이상 존재하지 않습니다. 자바 스크립트 범위 here 또는 here에 대해 읽어보십시오. 당신은 다음과 같은 코드를 변경할 수 있습니다 : 어떤 유형 radiobutton 없습니다

var wholebase = null; //<-- declare the variable here 
var formobj = document.h1; 
for (var j = 0; j < formobj.elements.length; j++){ 
     if (formobj.elements[j].type == "radiobutton" && formobj.elements[j].checked){ 
     wholebase = formobj.elements[j].value; 
    } 
} 
+0

내부 범위는 무엇입니까? –

+0

@Ilia Frenkel 사실, 이건 잘못되었습니다. Javascript the Good Parts : "불행하게도 자바 스크립트의 블록 구문에 의하면 JavaScript가 블록 범위를 가지고 있지 않습니다.이 혼동은 오류의 원인 일 수 있습니다." for 루프에서 변수를 선언 한 다음 루프가 닫힌 후 라인에서 변수를 사용하는 간단한 테스트 사례를 시도해보십시오. 보이는 것입니다. – AlexMA

+0

@AlexMA 당신은 절대적으로 옳습니다! 점심 시간 전에 4 가지 다른 언어로 코드를 작성하면 다음과 같이됩니다. –

관련 문제