2012-08-15 4 views
0

클릭 할 때 양식 동작을 변경하는 확인란을 만들려고합니다. 확인 여부에 따라 메시지를 경고하도록 설정하여 시작하지만 아무 일도 일어나지 않습니다. 제발 도와주세요!자바 스크립트 및 체크 상자

자바 스크립트 :

function toggleAction(){ 
var check = document.getElementById('checkb').checked; 
    if (checked == "1"){ 
    alert("is checked"); 
    }else{ 
    alert("is not checked"); } 
} 

HTML :

<INPUT TYPE="checkbox" id="checkb" onclick="toggleAction()">Add Another<br> 
+1

변수의 이름은'check'이지만 코드에 존재하지 않는'if' 문에서'checked'라는 변수의 값을 검사하고 있습니다. –

답변

6

귀하의 주요 문제는 당신이 당신의 check 변수하지만 다음 if 성명에서 checked을 찾았다이라는 점이다. 이차적으로 .checked은 부울 값 (true 또는 false)이지만 문자열 "1"과 비교합니다. 이 작업은 발생하지만 권장하지는 않습니다.

시도 :

if (check) alert("is checked"); 
else  alert("is not checked"); 

, 또한, 이벤트 처리 체크 박스에 대한 참조를 사용하는 것입니다 핸들러에 명시 적으로 getElementById을 사용하는 것보다 더 나은 : 방법 또한 내가 위에서

document.getElementById('checkb').onclick = toggleAction; 
function toggleAction(){ 
    if (this.checked) alert('yes'); 
    else    alert('no'); 
} 

onclick="..." HTML 특성을 사용하는 대신 JavaScript를 사용하여 프로그래밍 방식으로 이벤트 처리기를 할당했습니다. 이것은 "모범 사례"로 간주됩니다. HTML로 직접 JavaScript를 작성하면 안됩니다.

+0

+1 - if (x == 1) 및 if (x == "1")는 완전히 다른 두 조건입니다. "1"은 문자열이지만 1은 참입니다. –

+1

@DavidHoude 그러나 느슨한 형식의 JavaScript에서는'1 == "1"'은'true'입니다. 타입 강제 변환을 원하지 않는다면'1 === "1"'을 사용해야 할 것입니다. (사실, '사실 == 1'과 '사실 == "1"은 모두 사실입니다.) – Phrogz

+0

원래 인용 부호가 없었지만 작동하지 않았습니다. 나는 단지 그것들이 무엇이든지 바뀔지 알아보기 위해 최근에 그들을 추가했습니다. – cream

1

라인 if(checked == "1")if(check)이어야합니다.

관련 문제