본문 바로가기

HTML & CSS & JavaScript/JavaScript

요소 추가 / 제거

  • 요소 추가 / 제거

  • HTML
<div id="container"></div>   

<button id="add">추가</button>

<button id="calc">계산</button>
  • CSS
/* 한 줄 */
.row{
  margin: 5px 0;
  display: flex;
}

/* input 태그 */
.in{width: 100px;}

/* span 태그(X 버튼) */
.remove{
  border: 1px solid black;
  border-radius: 50%;
  display: inline-block;
  width: 20px;
  margin-left: 5px;
  text-align: center;
  font-weight: bold;
  cursor: pointer;
}
  • JavaScript
// "추가" 버튼이 클릭되었을 때
document.getElementById('add').addEventListener('click', function(){

    // div 요소 생성
    const div = document.createElement('div');

    // div에 row 클래스 추가
    div.classList.add('row');

    //------------------------------------------

    // input 요소 생성
    const input = document.createElement('input');

    // input에 in 클래스 추가
    input.classList.add('in');

    // input에 "type" 속성, "number" 속성값 추가(type = number)
    // - 요소.setAttribute("속성", "속성값") : 요소에 속성/속성값 추가
    input.setAttribute('type', 'number');

    //------------------------------------------

    // span 요소 생성
    const span = document.createElement('span');

    // span의 내용으로 'X' 추가
    span.innerText='X';

    // span에 remove 클래스 추가
    span.classList.add('remove');

    // span이 클릭되었을 때에 대한 이벤트 동작 추가
    span.addEventListener('click', function(){

        // 요소.parentElement : 부모 요소
        // 요소.remove() : 요소 제거
        span.parentElement.remove();

        /* div.remove(); */
    })

    //------------------------------------------

    // div 내부에(자식으로), input, span 순서대로 추가
    div.append(input);
    div.append(span);

    // #container에 div를 마지막 자식으로 추가
    document.getElementById('container').append(div);
})

// 계산 버튼 클릭 시 이벤트 동작
document.getElementById('calc').addEventListener('click', function(){

    // 합계 저장용 변수
    let sum = 0;

    // in 클래스 요소 전부 얻어오기 -> 배열 형태
    const list = document.getElementsByClassName('in');

    // 배열용 향상된 for문(of)
    for(let input of list){
        // sum에 입력한 값 누적
        // input에 작성된 값은 모두 string -> 형변환 필요
        sum += Number(input.value);

        // Number("") == 0 // 빈 칸은 0으로 변환되기 때문에 신경쓰지 말자
    }
    alert(sum);
})

See the Pen 24-12-26 js review10 by Namu (@Namu-the-sans) on CodePen.

'HTML & CSS & JavaScript > JavaScript' 카테고리의 다른 글

함수 (Function)  (0) 2024.12.26
DOM ( Document Object Model)  (0) 2024.12.26
객체 ( Array )  (0) 2024.12.26
정규 표현식 (Regular Expression)  (1) 2024.12.26
배열(Array)  (0) 2024.12.25