dukDukz

To do list_ Array 배열 없이 요소 삭제하기 본문

웹 개발/JAVASCRIPT

To do list_ Array 배열 없이 요소 삭제하기

헤일리_HJ 2021. 3. 23. 13:44

전체 코드 _ 수업 중 한것

더보기

전체 코드 _ 수업 중 한것

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>To do list</title>

    <style>
        html {
            overflow-x: hidden;
            overflow-y: auto;
        }

        #wrap {
            width: 100%;
        }

        * {
            margin: 0;
            padding: 0;
        }

        a{
            text-decoration: none;
        }

        ul,li {
            list-style: none;
        }

        #header {
            width: 100%;
            height: 200px;
            margin: 0 auto;
            background: #666;
            color: white;
        }

        #header>h2 {
            text-align: center;
            padding-top: 20px;
        }

        #header>#input {
            margin: 30px auto 0 auto;
            width: 800px;
            text-align: center;     /*input 태그 가운데 정렬*/
        }

        .i_text {
            height: 30px;
            border: gray;
            border-radius: 5px;
            padding: 7px 14px;
            width: 280px;
            box-sizing: border-box;
        }

        .i_button {
            width: 40px;
            height: 30px;
            padding: 7px 14px;
            box-sizing: border-box;
        }

        #content {
            margin-top: 20px;
        }

        .cardList>li {
            text-align: center;
            margin-bottom: 20px;
        }
    </style>
</head>

<body>
    <div id="wrap">
        <div id="header">
            <h2>to do list</h2>

            <div id="input">
                <input type="text" id="card_input" value="초기벨류" class="i_text">
                <input type="button" value="+" class="i_button" onclick="add_text();">
            </div>
        </div>

        <div id="content">
            <ul class="cardList">
                <li>sample1</li>
                <li>sample2</li>
                <li>sample3</li>
            </ul>
        </div>
    </div>

    <script type="text/javascript">
        //const btnArr = [];    //빈 배열 생성 - 함수 밖에 써줘야함

        function add_text(){
            //const newId = btnArr.length;      // 처음엔 0을 newId에 넣음 id에 0부터 순차적으로 들어감
            //console.log(newId);

            cardInput = document.querySelector('#card_input');  // input box 아이디 값을 받아서 변수에 담았다
            cardList = document.querySelector('.cardList');     // 내용 출력하는 영역 설정
            li = document.createElement('li');                  //li 는 new li  내용 출력하는 최소단위 엘리먼트
            li.innerHTML = cardInput.value;                     //li안에 내용을 넣기 위해서 : cardInput에 있는 글자를 넣기 위해
            
            /*삭제버튼*/
            delBtn = document.createElement('button');      // li안에 버튼을 넣기 위해 <button></button> 만 생성함
            delBtn.innerHTML = ' X ';                       // <button> X </button> 인데 여기에 id 값을 추가하고 싶음 (버튼 안에 내용('X') 넣으려고 만들어줌)
            //delBtn.setAttribute('id','0');                // 속성값을 만들어 준다. <button id="[newId]"> X </button>
            delBtn.onclick = function(){                    // 삭제 버튼 눌렸을때 {} 안에 있는 내용이 실행된다.
                cardList.removeChild(this.parentNode);
                /*  
                    cardList =  내용을 출력한 영역 설정 부분
                    removeChild() = 매서드 안에 있는 값을 노드제거
                    this.parentNode = this 개념 이해 this = 삭제 버튼
                                      parentNode 나의 부모 엘리먼트 (=버튼의 상위는 li 이므로) li를 삭제하겠다.
                */
            }

            li.appendChild(delBtn);             
            /* 
                li 엘리먼트 안에 여태동안 만들었던 delBtn을 넣는다.
                <li>
                    [cardInput.value]
                    <button id="1"> X </button>
                </li>
            */
            
            cardList.appendChild(li);       //cardList 안에 li를 넣어서 완벽하게 만든다.

            //btnArr.push(cardInput.value);   // 배열에 cardInput.value값을 넣는다. (입력된 값을 배열에 넣어준다.) li를 삭제한다고 배열에서 없어지지는 않는다.
            //console.log(btnArr);
        }
        
    </script>
    <!--배열이 없어도 동작이 된다! list 자체를 지우면 되기때문에-->


</body>

</html>

 

정리한 버전 (주석 포함)

더보기

 clean ver

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>To do list</title>

    <style>
        html {
            overflow-x: hidden;
            overflow-y: auto;
        }

        #wrap {
            width: 100%;
        }

        * {
            margin: 0;
            padding: 0;
        }

        a{
            text-decoration: none;
        }

        ul,li {
            list-style: none;
        }

        #header {
            width: 100%;
            height: 200px;
            margin: 0 auto;
            background: #666;
            color: white;
        }

        #header>h2 {
            text-align: center;
            padding-top: 20px;
        }

        #header>#input {
            margin: 30px auto 0 auto;
            width: 800px;
            text-align: center;     /*input 태그 가운데 정렬*/
        }

        .i_text {
            height: 30px;
            border: gray;
            border-radius: 5px;
            padding: 7px 14px;
            width: 280px;
            box-sizing: border-box;
        }

        .i_button {
            width: 40px;
            height: 30px;
            padding: 7px 14px;
            box-sizing: border-box;
        }

        #content {
            margin-top: 20px;
        }

        .cardList>li {
            text-align: center;
            margin-bottom: 20px;
        }
    </style>
</head>

<body>
    <div id="wrap">
        <div id="header">
            <h2>to do list</h2>

            <div id="input">
                <input type="text" id="card_input" value="초기벨류" class="i_text">
                <input type="button" value="+" class="i_button" onclick="add_text();">
            </div>
        </div>

        <div id="content">
            <ul class="cardList">
                <li>sample1</li>
                <li>sample2</li>
                <li>sample3</li>
            </ul>
        </div>
    </div>

    <script type="text/javascript">
        
        function add_text(){
            
            cardInput = document.querySelector('#card_input');  // input box 아이디 값을 받아서 변수에 담았다
            cardList = document.querySelector('.cardList');     // 내용 출력하는 영역 설정
            li = document.createElement('li');                  //li 는 new li  내용 출력하는 최소단위 엘리먼트
            li.innerHTML = cardInput.value;                     //li안에 내용을 넣기 위해서 : cardInput에 있는 글자를 넣기 위해
            
            /*삭제버튼*/
            delBtn = document.createElement('button');      // li안에 버튼을 넣기 위해 <button></button> 만 생성함
            delBtn.innerHTML = ' X ';                       // <button> X </button> 인데 여기에 id 값을 추가하고 싶음 (버튼 안에 내용('X') 넣으려고 만들어줌)
       
            delBtn.onclick = function(){                    // 삭제 버튼 눌렸을때 {} 안에 있는 내용이 실행된다.
                cardList.removeChild(this.parentNode);
            }

            li.appendChild(delBtn);             
            cardList.appendChild(li);       //cardList 안에 li를 넣어서 완벽하게 만든다.
    
        }
        
    </script>
    <!--배열이 없어도 동작이 된다! list 자체를 지우면 되기때문에-->


</body>

</html>

 

 

삭제 버튼

더보기

삭제 버튼

/*삭제버튼*/
<script>
            delBtn = document.createElement('button');      
            delBtn.innerHTML = ' X ';                       
            delBtn.onclick = function() 
            {                    
                cardList.removeChild(this.parentNode);
            }
</script>

 

 

 


 

스크립트 부분만 (주석 없음)

    <script type="text/javascript">
        function add_text(){
            bring_text = document.querySelector('#card_input');
            bring_li = document.querySelector('.cardList');

            make_li = document.createElement('li');
            make_li.innerHTML = bring_text.value;


            delBtn = document.createElement('button');
            delBtn.innerHTML = 'X';

            delBtn.onclick = function () {
                bring_li.removeChild(this.parentNode);
            }

            make_li.appendChild(delBtn);

            bring_li.appendChild(make_li);
        }

    </script>

1. 입력된 텍스트를 가져온다

2. 값을 적을 리스트 전체를 가져온다

3. 새로운 li를 만들어준다

4. 새로운 li에 텍스트의 value를 넣어준다

 

5. 삭제 버튼을 만들어준다

6. 삭제 버튼에 들어가는 내용 'X' 를 넣어준다

7. 삭제 버튼을 클릭했을때 li에 있는 삭제 버튼의 부모값인 li 전체를 사라지게 한다.

8. 새로운 li에 삭제 버튼을 넣어주는 걸 표현한다

9. 리스트에 완성된 li를 넣어준다.

'웹 개발 > JAVASCRIPT' 카테고리의 다른 글

2021.03.25 경일 배너 만들기 (애니메이션)  (0) 2021.03.25
2021.03.25 JS Document. 의 활용  (0) 2021.03.25
2021.03.24 JS에 대해  (0) 2021.03.24
2021.03.23 사진 슬라이드 _ js  (2) 2021.03.23
2021.03.22 To do list  (0) 2021.03.22