• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

문-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);

})();

답변 1

답변을 작성해보세요.

0

페이지를 처음 로드했을 때에는 currentItem 자체가 정의되어있지 않기 때문에(undefined), currentItem의 classList에도 접근할 수가 없답니다. 중간에 한번이라도 동작한 이후에는 말씀하신대로 흘러가지만, 제일 첫 클릭 상황 때문에 currentItem의 값 자체가 있는지 없는지로 판단해준 것입니다^^