2009-09-09 4 views
0

그래서 나는 다음과 같은 자바 스크립트 코드가 있습니다기본 JavaScript 질문 - 이벤트 처리기가 함수를 호출하지 않습니까?

<script type="text/javascript"> 
    function clearRadioButtons() 
    { 
     document.getElementById("radiobutton1").checked=""; 
     //etc for more radio buttons 
    } 
</script> 

및 다음 내 양식에, 나는 다음과 같은 코드가 있습니다 :

<select name="whatever" onclick="clearRadioButtons()"> 
    <option onclick="clearRadioButtons()"></option> 
    //and so on and so forth for <option> tags with values 
</select> 

문제는 내가 클릭하면 함수가 실제로도 호출되지 것입니다 select 또는 option 요소에 브라우저의 디버거에서 JS 함수를 호출하면 정상적으로 작동하지만 이벤트가 트리거되지 않습니다. 여기서 내가 뭘 잘못하고 있니? 나는 그것이 매우 간단하다는 느낌을 가지고 있지만 누가 압니다.

TIA.

답변

2

select 요소에서 onchange 이벤트를 사용하고 싶다고 생각합니다.

function clearRadioButtons() { 
    document.getElementById("radiobutton1").checked=""; 
    //etc for more radio buttons 
} 

window.onload = function() { 
    //Event binding... 
    document.getElementById('whatever').onchange = clearRadioButtons; 
}; 

<select id="whatever" name="whatever"> 
    <option></option> 
    ... 
</select> 
+0

니스, 고마워요. 완벽하게 작동했습니다. – benjy

+1

@benjy도 환영합니다. 프로그래밍 방식으로 이벤트 바인딩을 수행하는 것이 좋습니다. 그러면 코드 작성 및 코드를보다 쉽게 ​​디버깅하고 유지 관리 할 수 ​​있습니다. – CMS

2

당신은 괄호는 함수가 오른쪽에 실행되도록

clearRadioButtons(). 

로 함수에 전달합니다. the()없이 clearRadioButtons를 사용해야합니다. 그러면 함수에 대한 참조가 전달됩니다.

1

Ikke가 말한 것뿐만 아니라 수정 된 요소 속성이 아니기 때문에 checked 속성을 ""로 설정하면 안된다는 점을 지적해야합니다.이 속성은 부울로 설정하십시오.

+0

동의 함, false로 설정하거나 elem.removeAttribute를 통해 제거해야합니다. – CMS

관련 문제