moonStory

Angular에서 getElementsByClassName를 쓸 때 주의해야 할 점 본문

문제 해결

Angular에서 getElementsByClassName를 쓸 때 주의해야 할 점

moonStory_ 2023. 7. 17. 13:50
반응형

외주 프로젝트를 작업하던 중 해당 페이지 내용을 pdf 형식으로 다운로드할 수 있는 기능이 필요했다.

pdf로 뽑을 내용의 가장 상위 태그에 class를 주어 canvas로 작업하기로 했다.

 

클래스가 'home'인 첫 번째 요소 가져오기
 const el = document.getElementsByClassName(
          'home'
        )[0] as HTMLElement;

첫 번째로 작업한 내용은 위와 같이 클래스가 'home'인 첫 번째 요소를 가져와서 canvas로 뽑아 오는 것이였다.

 

하지만, 여기서 맞이한 오류는 해당 페이지에서 새로고침을 했을 때 el의 값이 undefined이여서 받아오는 값이 없기 때문에 canvas형성도 안 되고 pdf 다운로드도 안 된다는 것.

왜 이런 문제가 발생하는 건지 고민해 본 결과 해당페이지 이전에 로드되었던 home페이지에도 'home'인 클래스명이 있었던 것이였다.

 

내가 지금 사용하는 프레임워크는 Angular에 ionic을 사용하고 있기 때문에 라우터 특성 상 이동한 페이지가 dom에 쌓인다는 것이다.

결론, getElementsByClassName() 메서드를 사용할 때는 클래스 명을 지정할 때 주의해야 한다는 것.

 

getElementsByClassName()란 무엇일까?

이 메서드는 지정된 클래스 이름을 가진 모든 하위 요소를 포함하는 getElementsByClassName()라이브를 반환한다.

특정 class를 가지고 있는 모든 dom 요소에 접근하기 때문에 SPA 프레임워크를 사용할 경우에 주의해야한다.

 

 

반응형

'문제 해결' 카테고리의 다른 글

Swiper API 클릭 이벤트 오류 해결  (0) 2024.04.12