본문 바로가기
JavaScript

[JavaScript] 대화상자 삭제하기

by 상후 2021. 10. 17.
728x90
반응형

 

 

같이 학습하는 개발자가 JS 기초 과제를 던져주었다. 😊
한번 해결해봅시다.

 

 설명
기본 웹 사이트는 위와 같습니다.
각 대화상자별 우측에 있는 X 버튼을 클릭하면 해당 대화상자를 삭제하세요.

 

풀이 방법
1. X 버튼에 해당하는 태그들을 가져옵니다. (class 이름으로 태그 가져오기)
2. 각 버튼들의 부모 태그인 대화상자를 삭제하는 메서드를 작성합니다. (부모 요소 찾은 후 삭제)
3. X 버튼들에 클릭 이벤트를 등록하고 위에 작성한 메서드를 등록합니다. (이벤트리스너 활용)

 

기본 형태(index.html)

 

<!doctype html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
    <link rel="stylesheet" href="./main.css">
</head>
<body>

<div class="container">
    <div class="alert-box">
        <p>Alert1</p>
        <button class="close">X</button>
    </div>
    <div class="alert-box">
        <p>Alert2</p>
        <button class="close">X</button>
    </div>
    <div class="alert-box">
        <p>Alert3</p>
        <button class="close">X</button>
    </div>
    <div class="alert-box">
        <p>Alert4</p>
        <button class="close">X</button>
    </div>
</div>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
    // 코드를 작성하세요.
</script>
</body>
</html>

 

내 JavaScript 코드 (더보기 클릭)

 

더보기

const closes = document.getElementsByClassName("close");

const myFunction = function(event) {
    const div = event.target.parentNode;
    div.remove();
};

for (let i = 0; i < closes.length; i++) {
    closes[i].addEventListener('click', myFunction);
}

 

위 문제를 해결하는데 다양한 방법들이 존재합니다.

 

문제를 제시해준 분의 코드도 남겨놓겠습니다.

forEach 문을 활용하여 간단하게 구현하였고, 태그를 실질적으로 삭제하는 것이 아닌 숨김처리하였습니다. 👍

 

더보기

const close = document.querySelectorAll('.close');

close.forEach((item) => {
    item.addEventListener('click', () => {
        item.parentNode.style.display = 'none';
    })
})

 

간단하게 풀어볼 수 있는 재미있는 문제였다.

 

 

 

728x90
반응형

'JavaScript' 카테고리의 다른 글

[JavaScript] '==' 와 '===' 차이  (0) 2021.08.08

댓글