# "Do it! HTML+CSS+자바스크립트 웹 표준의 정석" 책을 바탕으로 작성하였습니다.
1. 문서 객체 모델 알아보기
1) 문서 객체 보델이란
- 자바스크립트를 이용하여 웹 문서에 접근하고 제어할 수 있도록 객체를 사용해 웹문서를 체계적으로 정리하는 방법
2) DOM 트리
- 문서 객체 모델의 구조를 나타냄
- DOM을 구성하는 기본 원칙
- 모든 HTML 태그는 요소(Element) 노드 입니다.
- HTML 태그에서 사용하는 텍스트 내용은 자식 노드인 텍스트(text) 노드입니다.
- HTML 태그에 있는 속성은 자식 노드인 속성(attribute) 노드입니다.
- 주석은 주석(comment) 노드입니다.
2. DOM 요소에 접근하고 속성 가져오기
1) DOM에 접근하기
① id 선택자로 접근하는 getElementByld() 메서드
document.getElementById("id명")
② class값으로 접근하는 getElementsByClassName() 메서드
document.getElementsByClassName("class명")
③ 태그 이름으로 접근하는 getElementsByTagName() 메서드
document.getElementsByTagName("태그명")
④ 다양한 방법으로 접근하는 querySelector(), querySelectorAll() 메서드
- DOM트리의 텍스트, 속성 노드까지 자유롭게 제어 가능하다.
노드.querySelector(선택자)
노드.querySelectorALL(선택자 또는 태그)
- 여러 값이 한꺼번에 반환 될 경우에는 querySelectorAll() 메서드를 사용한다.
- 반환 값은 노드 리스트이다.
2) 웹 요소의 내용을 수정하는 innerText, innerHTML 프로퍼티
요소명.innerText = 내용
요소녕.innerHTML = 내용
3) 속성을 가져오거나 수정하는 getAttribute(), setAttribute() 메서드
getAttribute("속성명")
setAttribute("속성명", "값")
3. DOM에서 이벤트 처리하기
1) DOM 요소에 함수 직접 연결하기
ex) 이미지를 클릭하면 알림창 표시
...
<img src="images/cup-1.png" id="cup">
...
<script>
var cup = document.querySelector("#cup"); // id = cup인 요소를 가져옴
cup.onclick = function(){
alert("이미지를 클릭했습니다");
}
</script>
2) 함수 이름을 사용해 연결하기
var cup = document.querySelector("#cup"); // id = cup인 요소를 가져옴
cup.onclick = changePic; // cup을 클릭하면 changePic 함수 실행
function changePic() {
cup.src = "images/cup-2.png";
}
3) dom의 이벤트 객체 알아보기
<script>
var cup = document.querySelector("#cup"); // id = cup인 요소를 가져옴
cup.onclick = function(event) {
alert("이벤트 유형: " + event.type + ", 이벤트 발생 위치 : " + event.pageX + "," + event.pageY);
}
</script>
Event - Web API | MDN (mozilla.org)
4) this 예약어
- 이벤트가 발생한 대상에 접근하기위해 사용
...
<body>
<div id="container">
<img src="images/cup-1.png" id="cup">
</div>
<script>
var cup = document.getElementById("cup");
cup.onclick = function(event) {
alert("클릭한 이미지 파일 : " + this.src);
}
</script>
</body>
...
5) addEventListener() 메서드 사용하기
- 한 요소에 여러 이벤트 처리기를 연결해 실행 할수있는 함수
요소.addEventListener(이벤터, 함수, 캡처 여부); //캡처여부 기본값 false
6) css 속성에 접근하기
document.요소명.style.속성명
document.getElementById("desc").style.color = "blue";
4. DOM에서 노드 추가, 삭제하기
1) 노드 리스트
- DOM에서 노드 정보를 여러개 저장한 것
- 배열과 비슷하게 동작한다.
2) 텍스트 노드를 사용하는 새로운 요소 추가하기
순서 | 메서드 | 설명 |
1 | createElement() | 새로운 요소 노드를 만듬 |
2 | createTextNode() | 새로운 텍스트 노드를 만듬 |
3 | appendChild() | 텍스트 노드를 요소 노드의 자식으로 연결 |
4 | appendChild() | 요소 노드를 dom에 연결 |
3) 속성 값이 있는 새로운 요소 추가하기
순서 | 메서드 | 설명 |
1 | createElement() | 새로운 요소 노드를 추가 |
2 | createAttribute() | 새로운 속성 노드를 추가 |
3 | 속성 값 지정하기 | 속성값을 프로퍼티로 지정함 |
4 | setAttributeNode() | 속성 노드를 요소 노드의 자식으로 연결 |
5 | appendChild() | 요소 노드를 dom에 연결 |
4) 노드 삭제
- parentNode 프로퍼티로 부모노드를 찾아서 부모노드에서 삭제함
부모노드.removeChild(자식노드)
'Frontend > Study' 카테고리의 다른 글
[CSS] 10_CSS 고급 선택자 (0) | 2021.12.21 |
---|---|
[CSS] 09_이미지와 그라데이션 효과로 배경 꾸미기 (0) | 2021.12.16 |
[JS] 16_자바스크립트와 객체 (0) | 2021.07.16 |
[JS] 15_함수와 이벤트 (0) | 2021.07.13 |
[JS] 14_자바스크립트 기본 문법 (0) | 2021.07.06 |