티스토리 뷰
https://www.w3schools.com/js/default.asp
DOM (Document Object Model)
노드
- HTML에 있는 태그를 구조화(트리)하였을 때 각각의 태그가 노드
elements node와 textnode
- 요소노드 : 태그 그 자체를 의미
- 텍스트노드 : 태그에 기록되어 있는 문자
노드 탐색 | 자식 | childNodes | 자식 노드들 |
firstChild | 첫번째 자식 노드 | ||
lastChild | 마지막 자식 노드 | ||
형제 | nextSibling | 다음 형제 노드 | |
previousSibling | 이전 형제 노드 | ||
부모 | parentNode | 부모 노드 | |
요소 탐색 | 자식 | children | 자식 요소들 |
firstElementChild | 첫번째 자식 요소 | ||
lastElementChild | 마지막 자식 요소 | ||
형제 | nextElementSibling | 다음 형제 요소 | |
previousElementSibling | 이전 형제 요소 | ||
부모 | parentElement | 부모 요소 |
요소 검색 메소드
원하는 요소 노드에 접근하기
document.getElementById("id명") 태그의 id 속성 값을 이용해 태그 엘리먼트 객체의 정보를 가져옴 요소에 id 속성이 있으면 위치에 상관 없이 (부모, 자식, 형제 등의 상대적 위치와 관계 없이)document.getElementById(id) 메소드를 통해 접근할 수 있다. |
<div id="area1" class="area"> div 영역 <p id="area2">p 영역</p> </div> <script> // 요소 접근 let elem = document.getElementById('area1'); // 요소의 스타일 속성을 이용하여 배경색 변경 elem.style.backgroundColor = 'skyblue'; //let area2 = 10; =>이름 충돌 area2.style.backgroundColor = 'blue'; => id가 아닌 전역변수에 접근 </script> |
document/element .getElementsByTagName(“태그명”)
태그명을 이용하여 해당 태그들의 객체 정보를 컬 렉션에 담아 가져옴
document/element .getElementsByClassName(“클래스명”)
클래스 명을 이용하여 해당 태그들의 객체 정보를 컬렉션에 담아 가져옴
document .getElementsByName(“이름“)
태그의 name 속성 값을 이용해 태그들의 객체 정보를 컬렉션에 담아 가져옴
document.querySelector(“선택자“) 선택자와 일치하는 문서 내 첫 번째 element 반환 document.querySelectorAll(“선택자”) 선택자와 일치하는 문서 내 모든 element 반환 element.querySelector(“선택자“) 선택자와 일치하는 element 내 첫 번째 element 를 반환 element.querySelectorAll(“선택자“) 선택자와 일치하는 element 내 모든 element 를 반환 |
<div class="first"> <div class="second"> <ul> <li>test1</li> <li>test2</li> <li>test3</li> <li>test4</li> </ul> </div> </div> <script> let first = document.querySelector(".first"); let myLi = first.querySelector(".second li:nth-child(3)"); let myLis = first.querySelectorAll("li"); console.log(myLi); console.log(myLis); myLi.style.color = 'red'; myLis[0].style.backgroundColor = 'gray'; </script> |
element.closest(“선택자“) 자신을 포함하여 선택자와 일치하는 가장 가까운 조상 요소를 반환 |
<div class="area"> <ul class="korean-food"> <li class="menu">제육볶음</li> <li class="menu">된장찌개</li> <li class="menu">김치찌개</li> </ul> </div> <script> let menu = document.querySelector('.menu'); console.log(menu); console.log(menu.closest('.korean-food')); console.log(menu.closest('.area')); // null -> h3은 li의 조상 요소가 아니므로 console.log(menu.closest('h3')); </script> |
element.matches(“선택자”) element가 선택자와 일치하는지 여부 반환 요소가 담겨있는 배열 등을 순회해 원하는 요소만 걸러내고자 할 때 유용하게 사용할 수 있다. |
<div class="area"> <ul class="korean-food"> <li class="menu">제육볶음</li> <li class="menu">된장찌개</li> <li class="menu">김치찌개</li> </ul> </div> <script> for(let elem of document.body.children) { if(elem.matches('.area')){ console.log(elem); } } </script> |
주요 노드 프로퍼티
innerHTML 요소 안 HTML을 문자열 형태로 받아올 수 있음 요소 안 HTML을 수정하는 것도 가능함 innerHTML로 요소의 내용 변경하기 자바스크립트에서 태그 엘리먼트의 값을 읽거나, 변경할 때 innerHTML 속성을 사용함 |
<div id="area1"> 자바스크립트에서 태그 엘리먼트의 값을 읽거나, 변경할 때 innerHTML 속성을 사용함 </div> <button onclick="checkValue();">innerHTML 확인</button> <script> function checkValue(){ // 아이디를 이용하여 요소 접근 let divEl = document.getElementById('area1'); // 읽어온 요소가 가지는 값 alert 출력 alert(divEl.innerHTML); // 값 변경하기 divEl.innerHTML = "innerHTML 속성으로 값 변경함"; } </script> |
outerHTML outerHTML 속성에는 요소 전체 HTML이 담김 outerHTML은 innerHTML에 요소 자체를 더한 것 innerHTML은 요소 값을 수정하지만 outerHTML은 요소 값을 수정하지 않음 |
<div id="area2"> area2 영역입니다. </div> <script> let area2 = document.querySelector("#area2"); console.log(area2.outerHTML); </script> |
textContent 요소 내의 텍스트에 접근할 수 있으며 태그는 제외하고 오로지 텍스트만 추출함 사용자의 입력 값을 받아 처리해야 하는 경우 사용자가 입력한 예상치 못한 HTML이 침투하는 것을 막기 위해 사용함 |
<div id="area3"> <p>area3 영역입니다</p> <p>문단을 나누어봅니다</p> </div> <div id="area4"></div> <div id="area5"></div> <script> // 태그 제외하고 텍스트만 추출 let area3 = document.getElementById('area3'); console.log(area3.textContent); let input = prompt("값을 입력하세요", "<p><b>강조할거에요</b></p>"); let area4 = document.querySelector("#area4"); let area5 = document.querySelector("#area5"); area4.innerHTML = input; area5.textContent = input; </script> |
hidden hidden은 요소를 보여줄지 말지 지정할 때 사용함 HTML 안에 쓸 수도 있고 자바스크립트에서도 쓸 수 있음 기술적으로 style="display:none"과 동일함 |
<div hidden>숨겨진 div</div> <div id="area6">area6 영역도 숨기기</div> <script> let area6 = document.getElementById('area6'); area6.hidden = true; </script> |
value input, select, textarea 의 값이 저장되는 속성 |
<form> 이름 : <input type="text" name="username" id="username"> <input type="button" onclick="readValue();" value="input 값 확인"> </form> <div id="area7" class="area"></div> <script> function readValue(){ let input = document.querySelector('#username'); if(input.value == ''){ alert('이름을 입력하세요'); input.focus(); }else{ document.querySelector("#area7").innerHTML = input.value + "라고 입력되었습니다."; } } |
DOM 프로퍼티와 HTML 속성
HTML에서 태그는 복수의 속성을 가질 수 있다.
브라우저는 HTML을 파싱해 DOM 객체를 만들 때 HTML 표준 속성을 인식하고,
이 표준 속성을 사용해 DOM 프로퍼티를 만든다.
비표준 속성은 DOM 프로퍼티로 전환되지 않는다.
비표준 속성에게도 활용할 수 있는 메소드
- element.hasAttribute(name) : 속성 존재 여부 확인
- element.getAttribute(name) : 속성 값을 가져옴
- element.setAttribute(name, value) : 속성 값을 변경함
- element.removeAttribute(name) : 속성 값을 지움
appendChild() | insertBefore() |
자식 노드의 마지막에 노드가 삽입된다. | insertBefore()는 appendChild()와 비슷하지만, 전달인자가 두 개라는 점이 다르다. 첫 번째 전달인자는 삽입하려는 노드고 두 번째 전달인자는 삽입 기준이 되는 노드로, 새 노드는 이 앞에 놓는다. 이 메서드는 삽입할 노드의 부모 객체가 될 노드에서 샐행된다. 그리고 두 번째 전달인자는 이 부모 노드의 자식 노드여야 한다. 두 번째 인자가 null이면, insertBefore()는 appendChild()처럼 작동하여 자식 노드의 끝에 삽입한다. |
createElement() | removeChild() | cloneNode() |
새로운 Element 노드를 생성하는 메서드이다. | 노드 삭제하기 | 노드 복제하기 |
removeChild() | replaceChild() |
문서 계층 구조에서 하나의 노드를 삭제한다. 주의할 점은 이 메서드는 삭제하려는 노드가 아니라 이 노드를 자식으로 가진 부모 노드에서 실행된다는 점이다. 따라서 메서드 전달인자로 삭제할 자식 노드를 넘기고, 부모 노드의 메서드로 호출한다. 문서의 n 노드를 삭제하기 위해선 대음처럼 작성한다. |
자식 노드 하나를 삭제하고 새 노드로 교체한다. 부모 노드에서 이 메서드를 실행할 때, 첫 번째 전달인자로 새 노드를, 두번째 전달인자로는 교체될 노드를 넘긴다. 텍스트 문자열로 노드 n을 교체하기 위해선 다음처럼 작성한다. |
이벤트 타입
https://www.w3schools.com/jsref/dom_obj_event.asp
◆ 자바스크립트 변수
const : 변하지 않는 값 ※ 대문자로 네이밍 하는게 좋음
let : 변할 수 있는 값
◆ 변수명 선언 규칙
변수는 문자와 숫자, $와 _만 사용
첫글자는 숫자가 될 수 없다
예약어는 사용할 수 없다.
가급적 상수는 대문자로 선언
변수명은 읽기 쉽고 이해할 수 있게 선언
◆ 형변환
String() : 문자형으로 변환
Number() : 숫자형으로 변환
Boolean() : 불린형으로 변환
'WEB > 기타' 카테고리의 다른 글
정보처리 기사 요약 정리 - 1장 요구사항 확인 (0) | 2024.07.12 |
---|---|
VS Code 설치 (0) | 2024.07.12 |
2024년 적용 SW기술자 평균임금 공표 (조사년도 2023년) (0) | 2024.07.11 |
chart.js (0) | 2024.06.12 |
Dto / Entity(=Domain) 차이점 (0) | 2024.01.23 |
- Total
- Today
- Yesterday
- 증폭기 #아이피타임증폭기
- jdk #jre
- 와이파이신호 #와이파이 #와이파이신호세게
- 바지락칼국수 #월곡동칼국수 #칼국수맛집
- 자바스크립트countiue
- 테스크탑무선랜카드 #무선랜카드 #아이피타이무선랜카드 #a3000mini #무선랜카드추천
- 파비콘사이즈
- ajax
- css미디어쿼리 #미디어쿼리 #mediaquery
- 파비콘 #파비콘 사이트에 적용
- 와이파이증폭기추천 #와이파이설치
- 자바스크립트break
- SQL명령어 #SQL
- iptime와이파이증폭기 #와이파이증폭기설치
- 쇼팬하우어 #좋은책
- 정보처리기사 #정보처리기사요약 #정보처리기사요점정리
- 무료폰트 #무료웹폰트 #한수원한돋움 #한수원한울림 #한울림체 #한돋움체
- 자바스크립트 #javascript #math
- 자바스크립트정규표현식
- 와이파이약할때
- 광주분식 #광주분식맛집 #상추튀김 #상추튀김맛집 #광주상추튀김
- 연명의료결정제도 #사전연명의료의향서 #사전연명의료의향서등록기관 #광주사전연명의료의향서
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- echart
- 썬크림 #닥터지썬크림 #내돈내산 #내돈내산썬크림 #썬크림추천 #spf50썬크림 #닥터지메디유브이울트라선
- sw기술자평균임금 #2025년 sw기술자 평균임금
- 좋은책
- 좋은책 #밥프록터 #부의원리
- thymeleaf
- lg그램pro #lg그램 #노트북 #노트북추천 #lg노트북
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |