본문 바로가기

JavaScript

17장 예제 - DOM에서 노드 삭제하기 / 실습 3

- 삭제해야 할 노드가 있다면 반드시 부모 노드 먼저 찾아야 함

- 노드를 삭제하는 메서드와 부모노드를 찾는 프로퍼티 필요

 

1. parentNode 프로퍼티 

 

 - 현재 노드의 부모 노드에 접근해서 부모 노드의 요소 노드를 반환

 - 노드.parentNode

 

 2. removeChild() 메서드 

 

 - 자식 노드를 삭제하는 역할

 - 부모노드.removeChild(자식 노드)

 

 -실습 3

 - 입력한 항목을 클릭하여 삭제하기 

<!DOCTYPE html>
<html lang="ko">
<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>입력한 항목을 클릭하여 삭제하기 </title>
 <style>
  * {
    box-sizing:border-box;
  }

  #container {
    width:500px;
    margin:20px auto;
    padding:20px;
  }

  input[type="text"] {
    width:370px;
    float:left;
    height:30px;
    padding-left:30px;
  }

  button {
    width:90px;
    height:30px;
    float:right;
    background:#222;
    color:#fff;
    border:none;
  }
  hr {clear:both; display:none};

  ul {list-style-type:none; padding-top:50px;}

  li {
    line-height:2.5;
    list-style-type:none;
  }
  li:hover {cursor:pointer;} /*마우스 커서 모양 -손가락 모양*/
 </style>
</head>
<body>
 <div id="container">
  <h1>Web programming</h1>
  <p>공부할 주제를 기록해 보세요</p>
  <p>공부가 끝난 것은 클릭해서 삭제할 수 있습니다.</p>
  <form action="">
    <input type="text" id="subject" autofocus>
    <button onclick="newRegister(); return false;">추가</button>  
  </form>
  <hr>
  <ul id="itemList"></ul>
 </div>

 <script>
  function newRegister() {
    var newItem = document.createElement("li"); //새로운 li 요소 노드를 추가
    var subject = document.querySelector("#subject"); //폼의 텍스트 필드를 가져옴
    var newText = document.createTextNode(subject.value); //필드값을 텍스트 노드로 추가
    newItem.appendChild(newText); //텍스트 노드를 자식 노드로 연결

    var itemList = document.querySelector("#itemList"); //부모 노드를 가져옴
    itemList.appendChild(newItem); //새로 만든 요소 노드를 부모 노드에 추가

    subject.value=""; //다음 입력을 위해 텍스트 필드 비우기
    var items = document.querySelectorAll("li"); //모든 항목 가져오기
    for(i=0;i<items.length;i++) {
      items[i].addEventListener("click",function(){
        //항목을 클릭하면 실행할 함수
        if(this.parentNode) //부모 노드가 있다면
          this.parentNode.removeChild(this); //부모 노드에서 삭제
      })

    }
  }
 </script>
</body>
</html>

 

 

'JavaScript' 카테고리의 다른 글

17장 마무리 문제 2  (0) 2023.04.14
17장 마무리 문제 1  (0) 2023.04.14
17장 실습 2  (0) 2023.04.14
17장 예제 -DOM에서 노드 추가하기  (0) 2023.04.14
17장 실습  (2) 2023.04.14