1. HTML 요소 추가(삽입)
1) append()
append()
메서드는 추가된 요소를 자식 객체로 인식하여 자신에게 포함시키고 선택한 요소의 끝에 삽입한다.
- 생성한 요소를
append()
메서드를 사용하여 HTML Element를 부모 노드에 포함시킨다.
- 요소 생성 이후 트리 구조와 연결(
append
) 해줘야 생성한 요소가 html에 적용된다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="style.css" />
<title>Document</title>
</head>
<body>
<div id="container">
<h2>Tweet List</h2>
<div class="tweet">hello</div>
<div class="tweet">world</div>
<div class="tweet">code</div>
<div class="tweet">states</div>
<p></p>
</div>
<div></div>
</body>
</html>
let create = document.createElement('div')
document.body.append(create)
const container = document.querySelector('#container')
const tweetDiv = document.createElement('p')
container.append(tweetDiv)
append와 appendChild의 차이점
append
메서드는 요소에 노드 객체 또는 DOM문자열을 자식 요소로 추가할 수 있지만, appendChild
는 노드 객체만을 추가할 수 있다.
append
한번에 여러 개의 자식 요소를 설정할 수 있지만, appendChild
하나의 노드만 추가할 수 있다.
2) prepend()
3) before()
4) after()
5) replaceWith()
2. HTML 요소 내용 변경
1) textContent
2) innerHTML
innerHTML
은 HTML 요소의 내용을 추가하거나 변경하고 싶은 경우 사용하는 프로퍼티이다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>JavaScript DOM Element</title>
</head>
<body>
<h1>innerHTML을 이용한 요소의 내용 변경</h1>
<p id="text">이 문장을 바꿀 것입니다!</p>
</body>
</html>
let str = document.getElementById("text");
str.innerHTML = "이 문장으로 바뀌었습니다!";
textContent와 innerHTML의 차이점
- textContent : 선택한 요소에서 HTML 요소를 제거한 순수한 텍스트 데이터의 값
- innerHTML : 선택한 요소의 HTML 태그를 그대로 제공, 따라서 보안에 취약하다. 사용자로부터 전달받은 콘텐츠를 추가할때는 사용하지 않는 것이 좋다.
const content = document.getElementsByTagName('p')[0];
content.textContent;
content.innerHTML;
3. HTML 요소 삭제
1) remove()
- 삭제하려고 하는 요소의 위치를 알고 있는 경우 사용한다.
node.remove()
2) removeChild()
- 자식 요소를 지정해서 삭제하려고 할 때 사용한다.
- 모든 자식 요소를 삭제하기 위해 반복문을 활용할 수 있다.
const container = document.querySelector('#container');
while (container.firstChild) {
container.removeChild(container.firstChild);
}
const container = document.querySelector('#container');
while (container.children.length > 1) {
container.removeChild(container.lastChild);
}
const tweets = document.querySelectorAll('.tweet')
tweets.forEach(function(tweet){
tweet.remove();
})
for (let tweet of tweets){
tweet.remove()
}