13. 요소 추가 제거
추가 버튼 클릭 동작
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[html]
<div class="container"><!-- 첫행은 무조건 존재(삭제 X) -->
<div class="row">
<input type="number" class="in">
</div>
<!-- 두번째 행 이후부터는 삭제 가능 -->
<!--
<div class ="row">
<input type="number" class="in">
<span class="remove">×</span>
</div>
이렇게 추가되는것은 너무 비효율적이다
-->
</div>
<button id="add">추가</button>
<button id="calc">계산</button>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[css]
/* 한 줄 */
.row{
margin : 5px 0;
display : flex;
align-items : center;
}
/* input 요소 */
.in{
width : 100px;
margin-right : 5px;
}
/* x버튼 */
.remove{
border: 1px solid black;
border-radius : 50%;
width : 18px;
height : 18px;
display : flex;
justify-content : center;
align-items : center;
box-sizing : border-box;
padding-bottom : 4px;
cursor : pointer;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
[js]
// 추가 버튼 클릭 시 동작
document.getElementById("add").addEventListener("click", function(){
// <div class ="row">
// <input type="number" class="in">
// <span class="remove">×</span>
// </div>
// div 요소 생성
const div = document.createElement("div");
// div에 row class 추가
div.classList.add("row");
// ---------------------------------------
// input요소 생성
const input = document.createElement("input");
// input에 in class 추가
input.classList.add("in");
// * 요소에 속성을 추가하거나 변경할 때 사용하는 함수
// 요소.setAttribute("속성명", "속성값");
// <-> 요소.removeAttribute("속성명") : 속성제거
// input.setAttribute("type","number");
// ---------------------------------------
// span 요소 생성
const span = document.createElement("span"); // 동적으로 요소를 생성
// span에 remove class 추가
span.classList.add("remove");
// span에 × 추가
span.inner HTML = "×"
// span에 click 이벤트 동적 추가(동적 요소에 이벤트 추가)
span.addEventListener("click", function(){
// 클릭된 x버튼의 부모 요소(div.row)를 삭제
// 요소.remove() : 해당 요소를 제거
this.parentElement.remove();
})
// ---------------------------------------
// div > input, span 조립
div.append(input, span);
// .container에 div를 마지막 자식으로 추가
document.querySelector(".container").append(div);
input.focus(); // 화면에 추가된 input에 포커스
});
// 계산 버튼 클릭 시
// (클릭으로 함수가 호출될 때 그때 상태의 html 요소의 상태를 읽어오기 때문에
// 정적이벤트로 작성해도 된다)
// input 요소에 작성된 값을 모두 얻어와 합한 후 출력
document.getElementById("calc").addEventListener("click", function(){
const inputList = document.getElmentsClassname("in");
let sum = 0;
for(let input of inputList){
sum += Number(input.value); // input 요소에 작성된 값 누적
}
alert("합계 : " + sum);
})