JavaScript와의 차이는?
- DOM은 프로그래밍 언어가 아니지만, Javascript 가 DOM을 이용해 문서 내의 객체나 요소에 접근을 하게 된다. DOM이 없으면 스크립팅 언어는 문서 내 접근이 힘들다.
- DOM은 다른 언어(파이썬 등)와/과도 상호작용할 수 있다.
1) console.dir : DOM을 객체의 모습으로 보여주는 것
2) 부모 엘리먼트(parent element)
document.getElementById("자식 엘리먼트 ID").parentNode.nodeName;
3) 자식 엘리먼트(Child element)
더 자세한 포스팅 보러가기 : DOM구조
createElement
createDocumentFragment
querySelector
, querySelectorAll
textContent
: 값을 할당한다.id
.classList.add('추가할 클래스명');
- 클래스를 추가할 수 있다..classList.remove('제거할 클래스명');
- 클래스를 제거할 수 있다..classList.toggle('바꿀 클래스명');
- 없으면 만들고, 있으면 없앤다.특정 배열의 값을 할당해서 넣기
const el = document.getElementById('container'); const newItem = document.createDocumentFragment(); const add = [ 'chai', 'mocha', 'javascript' ]; add.forEach(function(item) { let newDiv = document.createElement('div'); // div 태그로 새로운 요소 생성 newDiv.textContent = item; // 해당 요소 내용은 add 배열 안의 요소로 채워넣고 newDiv.classList.add('Basic'); // 해당 요소의 클래스는 'Basic'이라는 값으로 할당한다 newItem.appendChild(newDiv); // 빈 저장소에 newDiv를 할당해놓는다. }); el.appendChild(newItem); // 부모 요소인 container 안에 newItem에 저장해둔 newDiv 요소를 하단에 추가한다.
setAttribute
remove
, removeChild
, innerHTML = ""
, textContent = ""
appendChild
append와 prepend 차이점
append는 부모 element의 마지막에 추가하고
prepend는 부모 element의 첫번째에 추가한다.
appendChild 와 append 차이점
- append는 DOMString 객체를 추가하지만,
appendChild는 오직 노드 객체만 승락한다.- append는 리턴하는 값이 없지만
appendChild는 추가한 노드객체가 무엇인지 결과를 리턴해준다.- append는 여러개의 노드를 붙일 수 있지만,
appendChild는 오직 하나의 노드만 붙일 수 있다.
참조사이트
동기분이 전달주신 정보
MDN - append
MDN - appendChild
append vs appendChild
내용 추가 예정 ↓
function hadleClick(event){
let x = event.target.textContent;
}
attachEvent
로 바꿔서 사용해야한다.그외 참조사이트
https://www.w3.org/TR/DOM-Level-2-Events/events.html
Introduction to events
① HTML 안에 반복되는 혹은 반복할 템플릿 양식을 만들어둔다.
<template id="liStyle">
<li>
<div class="name"></div>
<div class="drink"></div>
<div class="ordertime"></div>
</li>
</template>
② 기존에 쓰던 javascript 코드는 하단처럼 길다
let orderList = document.querySelector('#orderlist');
//make li element
let liElement = document.createElement('li');
// make - div.name
let nameDiv = document.createElement('div');
nameDiv.classList.add('name');
nameDiv.textContent = 'Steve';
// make - div.drink
let drinkDiv = document.createElement('div');
drinkDiv.classList.add('drink');
drinkDiv.textContent = 'coffee';
// make - div.ordertime
let ordertimeDiv = document.createElement('div');
ordertimeDiv.classList.add('ordertime');
ordertimeDiv.textContent = '2020-08-12 13:00:01';
// li 의 자식으로 append하기
liElement.appendChild(nameDiv);
liElement.appendChild(drinkDiv);
liElement.appendChild(ordertimeDiv);
//결과 출력하기
orderList.appendChild(liElement);
③ HTML에 저장해둔 template를 이용하면 훨씬 코드가 간결해진다
let orderList = document.querySelector('#orderlist');
let tmp = document.querySelector('#liStyle');
let liElement = document.importNode(tmp.content, true);
liElement.querySelector('.name').textContent = 'Steve';
liElement.querySelector('.drink').textContent = 'coffee';
liElement.querySelector('.ordertime').textContent = '2020-08-12 13:00:01';
orderList.appendChild(liElement);