DOM(Document Object Model)
- HTML 페이지 문서 내에 있는
모든 요소를 객체(object)로 만드는
트리 구조의 모델.
1.HTML 문서 내에서 원하는 요소 선택 방법
document.querySelector(' 선택자 ')
document.querySelectorAll(' 선택자 ')
- 괄호 안 선택자에는
클래스나 아이디 모두 들어갈 수 있음.
클래스인 경우에는 . 추가하고,
아이디인 경우에는 # 추가해야함.
즉, CSS 선택자에 사용하는
후손 선택자, 자손 선택자, 동위 선택자 등등
모든 선택자 요소에 접근 가능.
- 매번 위와 같이 나열하는 것 보다는,
해당 부분을 변수로 저장해서
재사용하는 것이 훨씬 편리함.
- .querySelectorAll(' ')의 경우
해당 선택자를 가진 모든 요소가
배열과 비슷한 NodeList라는
형태의 객체가 리턴된다.
length 속성을 가지고 있어서,
원하는 요소에 접근하려면,
[index]를 추가해주면 된다.
(index는 0부터 시작함 주의)
- JQuery에서 $는
document.querySelector와 비슷한 역할.
2. HTML에 없는 요소 생성 방법
const elem = document.createElement( ' 태그 이름 ')
elem.innerHTML = ' HTML 구조 적기 '
- .creatElement( ) 괄호 안에는
원하는 태그의 이름만 적어주면 됨
(여기서 추가 원하는 요소를 elem 변수로 표기)
- elem 뒤에 붙은 .innerHTML 에는
태그 내에 들어갈 단순한 문자
혹은 HTML 구조 까지 들어갈 수 있음.
- 다만 createElement를 통해서
생성을 해도 메모리에는 올라가지만,
문서 내에 추가하기 전까지는
브라우저에 표시되지 않음.
3. 2에서 만든 요소 추가 및 제거 방법
const parentElem = document.querySelector(' 부모 선택자 ');
parentElem.appendChild(' elem ')
parentElem.removeChild(' elem ')
- 우선 원하는 위치의 부모 요소를 정하고
해당 요소를 미리 변수에 저장
(여기에서는 parentElem으로 표기)
- 말 그대로,
선택한 부모 태그(parentElem) 아래에
제일 마지막 자식 요소로
elem을 추가하는 방법.
- .appendChild( ) 혹은 .removeChild( ) 괄호 에
직접 document.querySelector(' 선택자 ')를 적어서
추가 혹은 제거해줄 수 있음.
다만, .appendChild() 내부에서 직접
코드를 적어 추가하는 경우에는
내용물 없는 태그만 생성됨
4. 원하는 요소에 속성 추가 및 제거 방법
document.querySelector(' 선택자 ').setAttribute(' 속성 이름 ', ' 문자 ')
document.querySelector(' 선택자 ').setAttribute(' 속성 이름 ', 숫자)
document.querySelector(' 선택자 ').getAttribute(' 속성 이름 ')
- 원하는 속성을 추가할 수도
속성에 대한 값을 알 수도 있는 명령문.
5. 요소에 원하는 클래스 추가 및 제거 방법.
document.querySelector(' 선택자 ').classList.add(' 추가할 클래스 이름 ')
document.querySelector(' 선택자 ').classList.remove(' 제거할 클래스 이름 ')
document.querySelector(' 선택자 ').classList.toggle(' 추가 혹은 제거할 클래스 이름 ')
document.querySelector(' 선택자 ').className = ' 추가할 클래스 이름 '
- .classList.add(' ')
기존에 있는 클래스를 건들지 않고,
적어준 클래스만 추가해줌.
- .classList.remove(' ')
기존에 있는 클래스를 건들지 않고,
적어준 클래스만 제거해줌.
- .classList.toggle(' ')
적어준 클래스가
있으면 해당 클래스 제거하고 false 리턴
없으면 해당 클래스 추가하고 true 리턴.
- .className
원래 있던 클래스를 모두 지우고
추가한 클래스만 남게 됨.
어찌보면 불편할 수 있음.
다시 코딩 공부를 시작하면서
DOM SCRIPT에서
제일 중요하면서도 기본적인 내용을
필기해보았음!
다시 맘잡고 공부하자,
까먹으면 시간만 아깝고 낭비하는 것 뿐 ㅜㅜ
'ℹ️ INFORMATION > 💾 HTML + CSS + JS' 카테고리의 다른 글
[CSS] Flexbox와 Grid + 연습 게임 (1분 코딩님의 설명 추천) (0) | 2021.04.13 |
---|---|
[JS] 자바스크립트로 콘솔창에 for문을 이용해서 다이아몬드 별찍기 연습 (2) | 2021.03.25 |
[JS] 자바스크립트(JavaScript) 연산자들의 우선순위 (0) | 2021.02.26 |
[JS] 자바스크립트 함수를 이용해 간단한 계산기 만들기 예제! (feat.왕초보) (0) | 2021.01.10 |
스파르타 코딩 클럽 : 나홀로 코딩 후기 및 추천 ( 정규 수업 8만원 추가 할인 방법 공유) (0) | 2020.12.30 |