ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바스크립트] Document.querySelector()
    일차 TIL 2023. 5. 29. 22:42

    Document.querySelector() 란?

    제공한 선택자 혹은 선택자 뭉치와 일치하는 문서 내 첫 번째 element를 반환 합니다
    일치하는 요소가 없으면 null을 반환합니다.

    Document.querySelector(".title")  => id가 title인 요소 반환 

    Document.querySelector("#title")  => class가 title인 첫 번째 요소 반환

     

    ()중괄호 안에 # 과 .(마침표) 가 들어갈 수 있는데

    오늘 개인 프로젝트를 진행 중 # class 요소만 반환하는 방법을 알고 있었기에

    id 값 요소를 가져오지 못했다.

     

    Error

    app.js:29 Uncaught TypeError: Cannot read properties of null (reading 'addEventListener')at

     

    원인으로는 HTML이 로드되기전에 자바스크립트 영역에서 HTML을 참조하기 때문이라고 한다.

    addEventListener에서 HTML 태그를 참조할 수가 없어 null 값을 참조하게되 에러가 발생한 것.

    <script  src="app.js"></script>

    가 body 테그 아래로 이동시켜 HTML의 로드가 끝나면 script의 영역을 부르게 하는 방법이 있다.

    하지만,

    <script defer src="app.js"></script>

    필자는 defer 속성을 추가였기에

    • defer 속성은 페이지가 로드된 후 해당 외부 스크립트가 실행 되게 함.

    첫 번째의 원인은 아니였다.

     

    두번째 해결

    window.onload = function(){} 함수로 웹브라우저의 모든 구성요소에 대한 로드가 끝이 났을때

    호출하는 함수 를 사용 하는 것이다.

     

    그런데, 나의 문제는 로드의 시기때문이 아닌 것이다.

     

    알아보던중 가져오는 값이 id 인가 class 인가에 따라 사용해야하는 부호가 달랐던 것이다.

    const cardBox = document.querySelector("#card-box")

    에서  나는 card-box 가 id로 되어있기 때문에 

    const cardBox = document.querySelector(".card-box")

    이런 식으로 작성해 주었어야 한 것이다.

     

    느낀 것

    해결하고나니 정말, 어이가 없었다.

    HTML이 값을 참조 할 수 없다 라는 것을 알고 방법들을 찾아 시도해 보았지만, 결국 해결을 못하여

    querySelector의 사용법까지 찾아 보아 알게 되었는데.

     

    Jquery를 사용할땐 $("#")으로만 배워 그냥 요소를 가져온다고만 알고 있었기에

    어떤식으로 작동되는 것인지는 전혀 몰랐던 것이다.

    사용법도 알아야하겠지만, 어떻게 작동되는 것인가

    결국 기초를 아는 것이 정말 중요하다고 느꼈다.

     

    - ${} 템플릿리터널과는 다른것

     

    참고 : https://developer.mozilla.org/ko/docs/Web/API/Document/querySelector

     

    Document.querySelector() - Web API | MDN

    Document.querySelector() 는 제공한 선택자 또는 선택자 뭉치와 일치하는 문서 내 첫 번째 Element를 반환합니다. 일치하는 요소가 없으면 null을 반환합니다.

    developer.mozilla.org

     

    '일차 TIL' 카테고리의 다른 글

    23-05-31 TIL  (0) 2023.05.31
    23-05-30 TIL  (0) 2023.05.30
    [자바스크립트]Boolean 의 필요성  (2) 2023.05.28
    논리 연산자 ||  (0) 2023.05.26
    index (인덱스)란?  (0) 2023.05.23
Designed by Tistory.