먼저 이 HTML 문서에서 노드란 Body 부분의 각각의 요소들을 의미한다.


다른 이름으로는 태그, 요소 등등...


그리고    <h1>

<h2>

</h2>

</h1>


이와 같이 h1 아래에 h2가 위치하는 순차적으로 내려가는 구조로 짜여지는데


이와 같은 관계를 부모 자식관계 - 부모 노드, 자식 노드라고 한다.


그리고 javaScript에서 노드에 관련된 기능을 DOM, Document Object Model 라고 한다.


여태껏 태그들의 id나 클래스 등을 불러올 때 document.getElementBy**** 을 썻는데


이 키워드도 DOM에 포함된다.


다음으로는 자주 쓰이는 키워드들 몇가지를 소개한다.


getElement(s)ById(TagName, 등등) : 태그의 지정 속성을 기준으로 해당 태그를 불러온다.


createElement : 노드를 만들어 담아 놓을 때 사용


createTextNode : 노드 내부의 HTML문을 만들어 담아 놓을 때 사용, 노드 또한 가능


appendChild : 자식관계로 노드를 추가


속성 지정 및 추가 : getElement나 createElement로 노드 변수를 만들어 변수.******을 통해 속성 변경이나 기능을 활용


querySelector : <h1 id="id"> 와 같이 있을 때 h2를 불러오고 싶다면 '#id > h2'와 같이 입력하면 h2가 불러와진다.

<h2>

</h2>

   </h1>




<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
	.area{
		background: lightgray;
		border: 1px solid black;
		height: 100px;
	}
</style>
</head>
<body>
	<h1>DOM(Document Object Model)</h1>
	<!-- 태그를 노드, 요소(엘리먼트)라고 표현 하기도 한다, 자식노드 부모노드 -->
	<!-- h1은 body의 자식 노드이다. -->
	<h3>텍스트 노드가 있는 노드 생성</h3>
	<button onclick="test1();">실행확인</button>
	<div id="area1" class="area"></div>
	
	<script type="text/javascript">
		function test1() {
			// Element(노드) 생성
			var title = document.createElement("h3");
			
			// textnode 생성(내부 HTML 문)
			var textNode = document.createTextNode("안녕? 난 텍스트노드야!");
			
			// elemenet의 node 연결
			title.appendChild(textNode);
			
			// appendChild - 자식노드로 추가하는 메소드
			document.getElementById("area1").appendChild(title);
		}
	</script>
	
	<hr>
	
	<h3>텍스트노드가 없는 노드 생성</h3>
	<button onclick="test2();">실행확인</button>
	<div id="area2" class="area"></div>
	
	<script type="text/javascript">
		function test2() {
			// img 태그 생성
			var imgTest = document.createElement("img");
			
			// 속성 지정(이미지 링크, 가로 세로 등등)
			imgTest.src = "https://www.fmkorea.com/files/attach/new/20171106/486616/416138940/828275155/4564da7307fbec289d6029377e4eb4bc.jpg";
			
			imgTest.width = "150";
			imgTest.height = "100";
			
			// 없는 속성 추가
			imgTest.myProperty = "123";
			// 없는 속성을 추가하기 위해서는 setAttribute() 사용해야 함
			imgTest.setAttribute("myProperty", "123");
			document.getElementById("area2").appendChild(imgTest);
		}
	</script>
	
	<hr>
	
	<h3>innerHTML</h3>
	<button onclick="test3()">실행확인</button>
	<div id="area3" class="area">
		<table id="board">
			<tr>
				<th>글번호</th>
				<th>글제목</th>
				<th>작성자</th>
				<th>조회수</th>
				<th>작성일자</th>
			</tr>
		</table>
	</div>
	
	<script>
		function test3(){
			// var board = document.getElementById("board");
			// alert(board.innerHTML);
			
			// css선택자를 자식 노드 선택하는 방법(board의 자식인 tbody를 지목)
			var board = document.querySelector('#board > tbody');
			
			
			var num = 1;
			var title = "제목입니다";
			var user = "user01";
			var count = 1;
			var date = new Date();
			
			board.innerHTML += "<tr><td>" + num
			+ "</td><td>" + title
			+ "</td><td>" + user
			+ "</td><td>" + count
			+ "</td><td>" + date.getFullYear()
			+ "-"
			+ (date.getMonth() + 1)
			+ "-"
			+ date.getDate()
			+ "</td></tr>";
		}
	</script>
		
	<hr>
	
	<h3>스타일 지정</h3>
	<button onclick="test4();">실행확인</button>
	<div id="area4" class="area"></div>
	
	<script>
		function test4(){
			var area4 = document.getElementById("area4");
			
			area4.style.backgroundColor = "orangered";
			area4.style.borderRadius = "50px";
			area4.style.transition = "all 2s";
			
			// transition은 자연스럽게 스타일이 바뀌게 하는 키워드, 위의 예는 2초동안 바뀜
		}
	</script>
	
	<h3>노드 삭제</h3>
	
	<button onclick="test5();">실행확인</button>
	<div id="area5" class="area"></div>
	<script type="text/javascript">
		function test5() {
			var area5 = document.getElementById("area5");
			
			area5.remove();
		}
	</script>
	
</body>
</html>


+ Recent posts