-
카테고리
-
세부 분야
프론트엔드
-
해결 여부
미해결
.offset().top; 관련 오류
20.09.02 17:25 작성 조회수 6.57k
0
해당 스크립트를 사용한 페이지에서는 잘 돌아갑니다.
그런데. 스크롤이벤트를 적용하지 않은 다른 페이지에서는 아래와 같은 오류가 나는데요.
이벤트가 없기떄문에 페이지 보는건 문제는 없지만. 왜 그런지 알고싶습니다.
해결방법은 있을까요.
scripts.js:89 Uncaught TypeError: Cannot read property 'top' of undefined
답변을 작성해보세요.
0
깡코딩
지식공유자2020.09.02
안녕하세요! 김영순님 :)
코드를 응용 수정해 보다가 문제가 생겨서 문의 주신것 같네요^.^
해당 오류는 탑 속성을 가지고 오지 못하기 때문에 생기는 오류입니다.
섹션6-8 리모컨 만들기 코드를 보면
if($(this.hash).offset()){
$('html')
.animate({
scrollTop:$(this.hash).offset().top
}, 500);
}
다음과 같은 구문이 있습니다.
이 구문을 보면 if문이 있습니다.
if($(this.hash).offset())
바로 이 부분 인데요 이 부분이 바로 해당 요소가 있는지 체크하는 부분입니다
해당 요소가 있다면 오프셋 값이 나오기 때문에 아래 구문이 실행되고
scrollTop:$(this.hash).offset().top
오프셋 탑 값을 가지고 올수 있게 되는겁니다 :D
만약 해당 요소의 오프셋 값이 없다면 아래 구문을 실행하지 않게 되므로
오프셋 탑 속성을 가지고 오는 구문이 실행되지 않게되고 오류가 생기지 않을겁니다 :)
도움이 되셨나요??
즉 스크롤 이벤트를 적용하지 않는 페이지라면 스크롤에 관련된 해당 요소가 없기 때문에
if($(this.hash).offset())
이프문으로 체크를 해서 스크롤에 관련된 코드가 실행되지 않도록 하는겁니다:)
만약 이해가 가지 않으시면 섹션6-8 강좌를 참고해 보세요!!
그럼 또다른 궁금증이 생길때 언제든 문의주세요 :D
답변 1