-
카테고리
-
세부 분야
웹 개발
-
해결 여부
미해결
문-4 if문
21.06.09 15:47 작성 조회수 122
0
안녕하세요
연관강의 문-4에서,
아래 와 같은 식을 배웠는데,
첫번째 if문 if(currentItem) 를
if(currentItem.classList.contains('door-opened')) 로 작성하면 왜 작동되지 않는지 알 수 있을까요..?
아래에서 currentItem에 .door-opened가 추가된 targetElem.parentNode 가 대입이 됐다면, 다시 돌아오는 currentItem은 .door-opened를 가지고 있을테니까,
if(currentItem.classList.contains('door-opened'))이게 적용이 될 수 있다고 이해를 했는데,
적용이 안돼서 그 이유가 궁금합니다.
(function(){
const stageElem = document.querySelector('.stage');
let currentItem;
function doorHandler (e) {
const targetElem = e.target;
if(currentItem){
currentItem.classList.remove('door-opened');
}
if(targetElem.classList.contains('door-body')){
targetElem.parentNode.classList.add('door-opened')
currentItem = targetElem.parentNode;
}
}
stageElem.addEventListener('click', doorHandler);
})();
답변을 작성해보세요.
0
1분코딩
지식공유자2021.06.29
페이지를 처음 로드했을 때에는 currentItem 자체가 정의되어있지 않기 때문에(undefined), currentItem의 classList에도 접근할 수가 없답니다. 중간에 한번이라도 동작한 이후에는 말씀하신대로 흘러가지만, 제일 첫 클릭 상황 때문에 currentItem의 값 자체가 있는지 없는지로 판단해준 것입니다^^
답변 1