
HTML 요소를 Object(JavaScript Object)처럼 조작(Manipulation)할 수 있는 Model
자바스크립트에서 DOM은 document 객체에 구현되어 있다.
<script> 태그의 위치는 어디가 좋을까?자바스크립트의 삽입 위치에 따라 스크립트 실행순서와 브라우저 렌더링에 영향을 미친다
참고 블로그 1
참고 블로그 2
<head> 에 위치한 경우
<body> 태그가 끝나기 전에 위치한 경우
node : 태그 노드와 텍스트 노드 전체.element : 텍스트 노드를 제외하고, 흔히 생각하는 태그(<div>같은).새로운 DOM 객체를 만들어 보자 !
document.createElement(element) : Create an HTML elementappend()와 appendChild()는 같은 기능을 하는 메서드이다.
기능이나 확장성에서 append()가 뛰어나기 때문에 append() 를 사용하자.
기존의 DOM 객체 붙여주자 !
| append() | appendChild() | |
|---|---|---|
| 타입 | 자바스크립트 메서드 | DOM 메서드 |
| 노드 객체(Node Object) | O | O |
| 문자열(DOMString) | O | X |
| 반환 값(return) | X | O |
| 다중 값 혀용 | O | X |
| prepend 지원 | prepend()메서드로 자식 끝에 추가 지원 | prependChild() 미지원 |
...parameter 지원한다.let items = document.querySelectorAll('.fruits');
document.querySelector('#newthing').prepend(...items);
/* appendChild 사용했을 때*/
let li = document.createElement('li');
let liText = document.createTextNode('
DOM 객체를 선택해서 조회하자 !
css 선택자로 선택할 수 있게 해준다. 태그명[속성명=속성값] 같은 것도 할 수 있고, 부모 > 자식, 부모 자손 등등 css의 선택자는 거의 다 쓸 수 있다.
document.querySelector(선택자)document.querySelectorAll(선택자)nodeValue가 가장 성능이 좋다. 하지만 만약 IE를 하위 버전에 포함해야 한다면 textContent를 사용하는 것이 성능상으로는 가장 좋을 것 같다.
또한 innerHTML과 createTextNode는 특별한 경우를 제외 하고는 사용을 배제하는 것을 추천한다.
<div id="elem1"></div>
<div id="elem2"></div>
<div id="elem3"></div>
<script>
let text = '<b>text</b>';
elem1.append(document.createTextNode(text)); // <b>text</b>
elem2.innerHTML = text; // text
elem3.textContent = text; // <b>text</b>
</script>