자바스크립트
DOM은 Document Object Model의 약자로,
HTML 요소를 Object(JavaScript Object)처럼 조작(Manipulation)할 수 있는 Model이다.
즉, JavaScript를 사용할 수 있으면, DOM으로 HTML을 조작할 수 있다.
그렇다면 HTML에서 JS는 어떻게 실행 될까?
웹 브라우저가 작성된 코드를 해석하는 과정에서 <script> 요소를 만나면, 웹 브라우저는 HTML 해석을 잠시 멈춘다.
HTML 해석을 잠시 멈춘 웹 브라우저는 <script> 요소를 먼저 실행한다.
<script> 요소는 등장과 함께 실행된다는 사실!
자바스크립트에서 DOM은 documnet 객체에 구현되어 있다. 브라우저에서 작동되는 자바스크립트 코드에서는, 어디에서나 documnet 객체를 조회할 수 있다.
console.log(document.body)
DOM을 이용하여 CRUD만들기
DOM을 이용하여 HTML Element 추가하기
const div = document.createElement('div')
div 변수에 <div>태그를 생성했다.
이 태그를 사용하려면? append가 필요하다
document.body.append(div)
DOM을 이용하여 HTML Element를 조회하기
DOM에서 HTML element를 조회하기 위해서는 선택자(selector)를 사용한다.
const one = document.querySelector('.one') // 해당 선택자 조회
const two = document.querySelectorAll('.two') // 모든 선택자 조회
const getOne = document.getElementById('container') // #을 붙이지 않는다.
const queryOne = document.querySelector('#container') // #을 붙인다.
console.log(getOne === queryOne) // true
DOM을 이용하여 HTML Element를 변경하기
div.textContent = 'dev';
console.log(div) // <div>dev</div>
div 엘리먼트 안에 contents를 넣기 위해서는 element.textContent를 사용한다.
앞서 생성한 div 엘리먼트를 container에 append 했을 때, CSS 스타일링이 적용되지 않는다. CSS 스타일링이 적용될 수 있도록, div 엘리먼트에 class를 추가한다.
div.classList.add('hello')
console.log(div) // <div class="hello">dev</div>
element.classList.add('')로 css 셀렉터를 추가할 수 있다.
DOM을 이용하여 HTML Element에 자식요소 추가하기
const container = document.querySelector('#container')
container.append(div)
container의 자식 요소로 div가 추가됐다.
+ element.setAttribute()
element.setAttribute( 'attributename', 'attributevalue' )
attributename에는 속성 이름을, attributevalue에는 속성값을 넣는다.
document.getElementById( 'hello' ).setAttribute( 'title', 'This is title' )
// <div id="hello" title="This is title"></div>
id 값이 hello인 요소의 title 속성을 This is title로 정합니다. 만약 이미 속성값이 존재한다면 그 값을 지우고 새 값을 적용합니다.
style의 다른 속성을 덮어 쓸수 있으므로 권장하지 않음.
element.style.title = "This is title";
이렇게 쓸것을 권장함
DOM을 이용하여 HTML Element 삭제하기
div.remove() // 이렇게 append 했던 요소를 삭제할 수 있다.
+ 특정 Element의 자식요소 다 지우기
document.querySelector('#container').innerHTML = '';
id가 container인 element의 자식요소를 모두 지움. 하지만 innerHTML은 권장하지 않음(보안 상의 이유)
+ 그래서 removeChild를 사용함
const container = document.querySelector('#container');
while (container.firstChild) {
container.removeChild(container.firstChild);
}
while문을 사용해서 id가 container인 element의 자식 요소중 첫번째 자식요소만 제거한다.
'javaScript' 카테고리의 다른 글
사고의 추상화(feat. filter, map, reduce) (0) | 2022.11.22 |
---|---|
Element와 node의 차이 (0) | 2022.11.22 |
구조분해 할당 사용하기 (0) | 2022.11.17 |
spread 문법 사용하기 (0) | 2022.11.17 |
클로저 모듈 패턴에 대해 (0) | 2022.11.17 |