본문 바로가기

DEVELOP

[javascript & jQuery] "Uncaught TypeError: Cannot read property 'defaultView' of undefined" 가 뜰 때

728x90

jquery-2.2.4.min.js 를 사용하여 퍼블리싱을 하고 있는데 콘솔 창에 "Uncaught TypeError: Cannot read property 'defaultView' of undefined" 란 문구가 아래와 같이 떴다.




내가 만든 함수 중 onclick으로 함수를 호출 했는데 해당 함수의 매개변수를 'this'로 호출하여 문제가 생겼던 것이다. 


아래 화면을 참고하자.


(직접 짠 코드입니다. 사용할 경우 출처를 밝혀주세요!)


<!-- 1 -->

<div class="m-btn-menu dis-table-cell vertical-m" onclick="clickSlideDown('this')">

      <span class="line"></span>

      <span class="line"></span>

      <span class="line mb0"></span>

</div>



<!-- 2 -->

<a href="javascript:clickSlideUp('this');" class="m-btn-close">

     <span class="diagonal-left"></span>

     <span class="diagonal-right"></span>

</a>


1번과 2번을 실행했을 때 2번은 정상 작동하나 1번으로 인해 콘솔에 에러 메세지가 뜬다.


디버깅 결과, 1번에서 class 가 세개 이상이 있는데, onclick=""으로 함수호출을 할때 매개변수로 'this'를 사용했기에 셋 중 어느 클래스를 가리키고 있는지 정확히 언급이 되지 않았기 때문이다.  


2번처럼 하나의 클래스(또는 아이디)를 갖는다면 this로 매개변수를 정의해도 정상으로 작동한다. 


따라서 this 대신 정확한 매개변수를 사용하자.




(직접 짠 코드입니다. 사용할 경우 출처를 밝혀주세요!)


<!-- 1 -->

<div class="m-btn-menu dis-table-cell vertical-m" onclick="clickSlideDown('.m-btn-menu')">

      <span class="line"></span>

      <span class="line"></span>

      <span class="line mb0"></span>

</div>



<!-- 2 -->

<a href="javascript:clickSlideUp('.m-btn-close');" class="m-btn-close">

     <span class="diagonal-left"></span>

     <span class="diagonal-right"></span>

</a>