• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

while문으로 target 얻어오는 방법에서 질문 드립니다

21.02.20 18:54 작성 조회수 186

0

if문으로 target을 찾아서 하면 계층이 복잡해진다고 하셔서 

        while (!target.classList.contains('door')) {

          target = parentTarget;
          activate(target);
        }

      } 

이런식으로 while문을 통해 target을 조사하는 식으로 바꿔서 해보았는데요, 문을 한 번 열면 while문이 무한루프를 돌아서 페이지가 먹통이 되어버리네요 ㅜㅜ 무엇이 문제일까요? 이 방법을 사용하려면 어떻게 해야할지 모르겠어요

답변 1

답변을 작성해보세요.

2

아래처럼 해보세요^^

function doorHandler(e) {
	let targetElem = e.target;
	while (!targetElem.classList.contains('door-body')) {
		targetElem = targetElem.parentNode;

		if (targetElem.nodeName == 'BODY') {
			targetElem = null;
			if (currentItem) inactivate(currentItem);
			return;
		}
	}

	if (currentItem) inactivate(currentItem);

	if (targetElem.classList.contains('door-body')) {
		activate(targetElem.parentNode);
	}
}
페이커님의 프로필

페이커

질문자

2021.03.04

감사합니다!!