2014-01-22 3 views
0

오늘 저는 일부 일반 바닐라 JS를 사용 중입니다. onclick 이벤트에 대한 질문이 있습니다. 내가 좋아하는 버튼에 onclick 이벤트를 추가하면null의 onclick 속성을 설정할 수 없습니다.

function _(x) { 
    return document.querySelector(x); 
} 
function toggleSlide(el, maxH) { 
    var target = _(el); 
    if(target.style.height == null || target.style.height == maxH+"px") { 
     target.style.transition = "height 0.3s linear 0s"; 
     target.style.height = "0px"; 
    }else { 
     target.style.transition = "height 0.3s linear 0s"; 
     target.style.height = maxH+"px"; 
    } 
} 

모든 작품 :

단지 코드를 보여주기 위해 최선의 수 있습니다,

<button id="menu-btn" onclick="toggleSlide('#menu', 280)">Toggle</button> 

하지만이 오류를

"connot 세트 속성 'null의 onclick'"

내가 이렇게 할 때 :

_('#menu-btn').onclick = function() { 
    toggleSlide('#menu', 280) 
} 

하는 방법은 HTML에서 온 클릭를 추가하지 않고 내 토글 기능을 액세스 할 수 있습니까?

+0

파이어 버그 또는 이와 유사한 것으로 디버깅하는 경우, 아마도 대답을 줄 것입니다. 너의 js는 onload를 실행합니까? – Huangism

+1

스크립트가 닫는 본문 태그 바로 앞에 포함되어 있으면이 오류가 발생하지 않아야합니다. – Tyblitz

답변

1

버튼이 나타나기 전에 수신기를 추가하려고합니다. 문제 코드를 <script> 버튼이나 onload (별점은 아래 코드 참조) 뒤에 넣으십시오.

window.onload = function() { 
    _("#menu").onclick = function() { 
     toggleSlide('#menu', 280); 
    }; 
}; 

편집 :이 다수있는 경우 그들은 같은 onload 기능에 넣어되어야한다, 또는 마지막 전에 사람을 무시할 것 참고.

관련 문제