2014-05-20 2 views
-1

이 함수에서 사용자는 드롭 다운 메뉴에서 값을 선택하고 어떤 값이 선택 되더라도 var B을 해당 값으로 변경합니다.else 문이 올바르게 작동하지 않는 경우

function test(){ 
    var A = ["", "A", "B", "C"]; 
    var B = document.getElementById("myfile"); 

    if(A.value = "A"){ 
     B.selectedIndex = [2]; 
    } 
    else if(A.value = "B"){ 
     B.selectedIndex = [4]; 
    } 
    else if(A.value = "C"){ 
     B.selectedIndex = [1]; 
    } 
} 

오전 데 문제가 때마다 나는 B 또는 C를 선택 즉, 인덱스 항상 기본적으로 [2]이 아니라 [4] 또는 [1].

+5

당신은'='가 아니라'=='와 비교합니다. –

답변

5

비교할 시간을 지정합니다. 비교를 위해 =이 아닌 ==을 사용하십시오.

if(A.value == "A"){ 
    B.selectedIndex = [2]; 
} 
else if(A.value == "B"){ 
    B.selectedIndex = [4]; 
} 
else if(A.value == "C"){ 
    B.selectedIndex = [1]; 
} 
+1

나는 "===" –

+0

을 제안했다. "=="와 "==="을 사용해 보았으나 이제는 B가 전혀 변하지 않는다. – ipoood

+0

"A.value"는 존재하지 않는다. 'A'는 배열입니다. *'value' 속성을 설정하면 성공할 것이며, 매번 인덱스 '2'를 설정할 것입니다. 실제 'A.value'가 어디에서 왔는지 보지 않고 (샘플 코드에서 볼 수 없다는 가정하에) 무엇이 잘못 됐는지를 말하기는 어렵습니다. –

2

값을 할당하지 않으면 ifs에서 테스트합니다. 할당 된 값이 반환됩니다. 다음 값이 할당되므로 반환하지 않는 경우 조건은 사실이 될 것이다 0거짓, 빈 문자열, , 정의되지 않은 또는 NaN의. 그래서 첫 번째 if 문 블록에 들어가는 것입니다.

double 또는 triple을으로 변경하십시오.

if(A.value == "A"){ 
    B.selectedIndex = [2]; 
} 
else if(A.value == "B"){ 
    B.selectedIndex = [4]; 
} 
else if(A.value == "C"){ 
    B.selectedIndex = [1]; 
} 
+0

실제로 할당 연산자는 할당 된 값을 반환합니다. 부울을 반환하지 않습니다. 과제가 실패 할 수있는 방법이 없습니다. 'if (foo = 0) {}'을 시도하십시오. –

+0

제 오류를 지적 해 주셔서 고맙습니다. 나는 나의 대답을 업데이트했다. – Jeffpowrs

0

사용 == 없습니다 =

명세서 검사 값을 설정합니다. (모든 시간을 ...)

+0

실제로 할당 연산자는 할당 된 값을 반환합니다. –

3

=가 할당

==입니다 것은 어떤지 테스트 가능하다의 경우 내용의 경우

===은 콘텐츠 및 데이터 형식이 동일 함을 나타내는 테스트입니다.

귀하의 경우 =은 확실히 오타입니다. 최대 프로그램 안정성을 위해 ===을 사용하는 것이 좋습니다.

일부 사람들은 "A" == A.value을 쓰는 경향이 있으므로 잘못 배치하면 할당 오류가 발생합니다.

+0

+1 === 데이터 유형이 일치하는지 확인하는 것이 좋습니다. –

관련 문제