JS

2024.07.30 JavaScript 핵심 JS 이벤트 처리 - 4(반복문과동적생성)

정훈5 2024. 7. 30. 10:08

 

학습 목표 

1. Flexible Box(flexbox)를 활용해서 HTML 요소를 만들어 보자. 
2. 반복문을 사용한 LIST 만들어 보기

 

index2.html

더보기

index2.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>반복문을 활용한 리스트 생성</title>
    <style>
        body{
            background-color: brown;
            display: flex;
            flex-direction: column;
            align-items: center;
            margin: 0;
            padding: 0;
        }

       button {
            background-color: aquamarine;
            color: white;
            margin: 20px;
            border: none;
            font-size: 1em;
            padding: 8px;
        }

        .container {
            display: flex;
            /* 요소들이 컨테이너 영역을 벗어나면 다음줄로 자연스럽게 이동합니다. */
            flex-wrap: wrap;
            width: 80%;
        }

        .card {
            background-color: white;
            margin: 10px;
            padding: 20px;
            border-radius: 8px;
            flex: 1;
            /* 최소 버튼 클릭 */
            min-width: calc(33.33% - 20px);
            text-align: center;
        }
    </style>
</head>

<body>
    <h1>반복문을 활용한 리스트 생성</h1>
    <button onclick="render()">Render</button>
    
    <div class="container" id = "container">
         <!-- 자바스크립트로 요소 동적 생성 -->
         <!-- <div class="card">
            <h2>Title 1</h2>
            <p>content</p>
            <button onclick="deleteCard('1')">Delete</button>
         </div> -->
    </div>

    <script>
        let count = 0;  // 카드의 고유한 id를 생성하기 위한 변수로 활용한다.

        function render() {
            // 카드가 추가될 컨테이너 요소를 가져옵니다.
            const container = window.document.getElementById('container')
            // 동적으로 생성한 CARD 요소를 container에 자식으로 넣어주면 된다.
            for(let i= 1; i<=3; i++) {

                count++;
                const card = createCard(count);
                container.append(card);
            }
        }

        function createCard(cardId) {
            // 함수를 통해서 HTML 요소를 생성하는 거 연습
            const card = window.document.createElement('div'); //  createElement()  --> <div></div> 태그를 생성해 준다.
            card.className = "card"; // ex ) <div class='card'></div> 를 생성해 준다.
            card.id = "card-" + cardId; // 식별을 할 수 있도록 한다.

            // 백틱을 활용해서 요소를 만드는 방법 연습
            card.innerHTML = `
             <h2>Title ${cardId}</h2>
             <p>content ${cardId}</p>
             <button onclick="deleteCard(${cardId})">Delete</button>
            `; // textContent 말고 innerHTML을 사용했음 

            return card;
        }

        function deleteCard(cardId) {

            // 요소를 삭제하는 방법은
            // element.remove() 만 호출하면 된다.
            // 1.해당하는 요소를 가져온다. 

            const card = document.getElementById('card-'+cardId);
            card.remove();  // quertSelector() 조사


        }
    </script>

</body>
</html>

'