728x90
노드 추가 방법
1) 텍스트 노드 생성
2) 텍스트 노드를 추가할 엘리먼트 노드 선택
3) 엘리먼트 노드에 텍스트 노드 추가하기
HTML 코드
1
2
3
4
5
6
7
8
9
10
11
12
|
<section id ="section6">
<h1>Ex6 노드조작: 메뉴추가(createTextNode, Element)</h1>
<div>
<input class="title-input" name="title"/>
<input type="button" class="add-button" value="추가하기"/>
<input type="button" class="del-button" value="삭제하기"/>
</div>
<ul class="menu-list">
<li><a>aaa</a></li>
<li><a>bbb</a></li>
</ul>
</section>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
1. JS 텍스트 노드 추가하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
//Ex6 : 엘리먼트 노드의 속성 변경
window.addEventListener("load", function() {
var section = document.querySelector("#section6");
var titleInput = section.querySelector(".title-input");
var menuListDiv = section.querySelector(".menu-list");
var addButton = section.querySelector(".add-button");
var delButton = section.querySelector(".del-button");
addButton.onclick = function() {
const txtNode = document.createTextNode(title);
menuListDiv.appendChild(txtNode);
};
delButton.onclick = function() {
var txtNode = menuListDiv.childNodes[0];
};
});
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
위와 같이 간단하게 menu-list의 자식으로 title-input에 입력한 값을 생성 해 줄 수 있다.
허나 노드를 지우게 될 때 공백또한 노드로 인식하는 문제가 발생하지만 보통 값을 넣어줄 때 <a>,<li> 등 태그로 묶어 전달하기 때문에 걱정 할 필요는 없다.
2. 추가하는 텍스트 노드를 태그로 묶어 추가하기
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
|
//Ex6 : 엘리먼트 노드의 속성 변경
window.addEventListener("load", function() {
var section = document.querySelector("#section6");
var titleInput = section.querySelector(".title-input");
var menuListUl = section.querySelector(".menu-list");
var addButton = section.querySelector(".add-button");
var delButton = section.querySelector(".del-button");
addButton.onclick = function() {
var txtNode = document.createTextNode(title);
var aNode = document.createElement("a");
aNode.appendChild(txtNode);
var liNode = document.createElement("li");
liNode.appendChild(aNode);
menuListUl.appendChild(liNode);
};
delButton.onclick = function() {
var liNode = menuListUl.children[0];
menuListUl.removeChild(liNode);
};
});
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
텍스트만 추가 할 때와는 다르게 createElement속성을 사용해 a태그와 li태그를 붙여 준 상태엣 menulListUI 자식 태그로 넣어 주었는데 innerHTML 속성를 사용해 조금더 간략한 방법을 알아보자
3. innerHTML 속성 사용해 조금 더 간략해지기
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
|
//Ex6 : 엘리먼트 노드의 속성 변경
window.addEventListener("load", function() {
var section = document.querySelector("#section6");
var titleInput = section.querySelector(".title-input");
var menuListUl = section.querySelector(".menu-list");
var addButton = section.querySelector(".add-button");
var delButton = section.querySelector(".del-button");
addButton.onclick = function() {
var html= "<a href=''>"+title+"</a>";
var li = document.createElement("li");
li.innerHTML = html;
// menuListUl.appendChild(li);
// 상향된 방법
// 여러개를 추가 할 수 있다. 인자가 가변길이이다.
};
delButton.onclick = function() {
var liNode = menuListUl.children[0];
// menuListUl.removeChild(liNode);
// 부모를 통해 지우는 방법이 아닌 나를 지워라.
};
});
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
3번 코드와 바뀐 부분은
addButton에서 var html 값을 li.innerHTML 속성으로 값을 받아 더 간략한 코드를 만들 수 있다.
menuListUl.appendChild(li) 에서 menuListUl.appned(li) 로 바꾸었는데 appendChild와 다르게 인자를 여러개 값을 받을 수 있고 String 값 또한 받을 수 있다.
delButton에서 menuListUl.removeChild(liNode)에서는 li로 추가한 값을 지우기 위해서는 부모 menuListUl이 필요 했는데 그렇게 하지 말고 자기 자신을 지울 수 있는 remove()속성을 사용했다.
결과
반응형
'2019백업' 카테고리의 다른 글
JavaScript - Variable (0) | 2019.07.26 |
---|---|
JavaScript - 노드복제와 템플릿 태그 (0) | 2019.07.24 |
Javascript 엘리먼트 노드의 속성 변경 (0) | 2019.07.24 |
Javascript 엘리먼트 선택방법 (4. childNodes, children) (0) | 2019.07.24 |
Javascript 엘리먼트 선택방법 (3. Selector API Level1) (0) | 2019.07.23 |