본문 바로가기

[javaScript] BOM/DOM

[BOM(Browser Object Model) : 브라우저 객체 모델]

 

웹브라우저가 위에서부터 script해석 -> body를 해석 하게 됨.

하지만 body를 먼저 로딩한 후 그에 해당하는 script를 적용하기 위해서

요즘은 window객체에 있는 onload를 활용한다. 

 

  <script>
    //window객체에 onload를 만듬
	//load가 다 끝나면 function실행해라
	window.onload = function() {
		alert('load complete...')
	}
   </script>

 

[DOM(Document Object Model) : 도큐먼트 객체 모델]

 

body와 관련해서 움직이고 있음

window.onload와 함께 쓰여야 한다. 

 

<script>
	window.onload = function() {
		//document.body.innerHTML: tag까지나옴
		alert('innerHTML : ' + document.body.innerHTML)
		//document.body.innerText: tag를 제외한 나머지 요소값만 나오게 
		alert('innerText : ' + document.body.innerText)
		
		let tags = ''
		tags += '<ul>'
		tags += '<li>red</li>'
		tags += '<li>orange</li>'
		tags += '<li>blue</li>'
		tags += '</ul>'
		
//		document.body.innerHTML = tags
	//	document.body.innerText = tags
		
	//	함수 innnerHTML나옴
		document.write(tags)
	
	//	document.body.innerHTML = document.body.innerHTML + tags
	//	document.body.innerHTML += tags
	
	//	document.body.innerHTML += '<br>'
	//	document.body.innerText += tags
	}
</script>

 

[DOM과 관련한 함수]

 

getElementById('id')

querySelector("#id")

querySelectorAll('td')

getElementByTagName('td')

 

setAttribute

appendChild

createElement

createTextNode

 

remove

removeChild

 

 

 

[DOM과 관련한 함수 예시1]

 

getElementById('id')

querySelector("#id")

querySelectorAll('td')

getElementByTagName('td')

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

	window.onload = function() {
		//id는 unique: 동일한 id값 가진 것 없음
		//'id'라고 써진 id를 찾아서 id에 넣기
		var id = document.getElementById('id')
		//querySelector: id, class둘다 꺼내올 수 있음
		//td태그 같은 것도 가능, 맨처음에 잡히는 거 1개만 꺼내옴
		//querySelectorAll(): td태그를 다 뽑아낼때 배열의 형태로 뽑아냄
		//#:id , .:class
		var id = document.querySelector('#id')
		//console.log(id)
		id.innerHTML = '아이디'
	
		var password = document.querySelector('.pwd')
		password.innerText = '패스워드'
	}

</script>
</head>
<body>
	<table border="1" style="width:100px; height: 100px">
		<tr>
			<td id="id">아이디</td>
		</tr>
		<tr>
			<td class="pwd">PASSWORD</td>
		</tr>
	</table>
</body>
</html>

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	window.onload = function() {
		 var tags = document.getElementsByTagName('td')
		 tags[0].innerHTML = '아이디'
		 
		 let nodes = document.querySelectorAll('td')
		 nodes[1].innerText = '패스워드'
	}
</script>
</head>
<body>
	<table border="1" style="width:100px; height: 100px">
		<tr>
			<td>ID</td>
		</tr>
		<tr>
			<td>PASSWORD</td>
		</tr>
	</table>
</body>
</html>

[DOM과 관련한 함수 예시2]

 

setAttribute

appendChild

createElement

createTextNode

 

이와 같은 구조로 html을 만들었을 때, a태그에 href를 의 내용을 붙이고 싶다

<a>  에서 <a href="http://www.daum.net">으로 변경시 

 

aTag = document.createElement('a')

aTag.setAttribute('href', 'http://www.daum.net ') 로 변경하면 된다

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	window.onload = function() {
		let tag = document.createElement('h1')
		let tagText = document.createTextNode("Hello")
//		console.log(tag)
//		console.log(tagText)
		tag.appendChild(tagText)
		document.body.appendChild(tag)
		
		let imgTag = document.createElement('img')
		imgTag.src = "https://t1.daumcdn.net/daumtop_chanel/op/20170315064553027.png"
//		console.log(imgTag)
		
		aTag = document.createElement('a')
		//aTag.href = 'http://www.daum.net'
		aTag.setAttribute('href', 'http://www.daum.net')
		aTag.setAttribute('target', '_blank')//새창
		
		//aTag 안쪽 내용에 내용자체를 넣을 때
		aTag.appendChild(imgTag)
		document.body.appendChild(aTag)
		
		console.log(aTag)
		
	}
	
	
	//	 body
//		|
//	------------
//	|			|
//	h1			p
//	|			|
//	"hello"		a [href, target]
//				|
//				img [src]
	
</script>
</head>
<body>
	<!-- <h1>Hello</h1>
	<img src="https://t1.daumcdn.net/daumtop_chanel/op/20170315064553027.png"> -->
	
</body>
</html>







 

[DOM과 관련한 함수 예시3]

remove: 자기포함 지운다

removeChild : 자기포함x, 자식객체만 지운다

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	window.onload = function() {
		let idTag = document.getElementById('id')
		idTag.parentNode.removeChild(idTag)
		//idTag.remove()
		
		pwd = document.getElementById('pwd')
		// <td id="id" style="color:red; font-size: 20pt; background-color: yellow;">아이디</td> 
		pwd.style.color = 'red'
		pwd.style.fontSize = '20pt'
		pwd.style.backgrondColor = 'yellow'
		pwd.style['border-style'] = 'dashed'
		pwd.style['border-color'] = 'blue'
		pwd.style['border-width'] = '3px'
		
	}
</script>
</head>
<body>
	<table border="1" style="width:100px; height: 100px">
		<tr>
			<td id="id">아이디</td>
		</tr>
		<tr>
			<td id="pwd">PASSWORD</td>
		</tr>
	</table>
</body>
</html>