๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿš€ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ JavaScript

1๏ธโƒฃ3๏ธโƒฃ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ - Dom์ด๋ž€? + childNodes, nodeList, appendChild, insertChild ์ •๋ฆฌ

by Meteora_ 2021. 3. 4.
728x90

Dom ์ด๋ž€? (Document Object Model)

 

๊ฐ ํƒœ๊ทธ๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ Object(๊ฐ์ฒด)

๊ทธ Object๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜

 

 

์ฝ”๋“œ ํŽผ์น˜๊ธฐ ->

๋”๋ณด๊ธฐ
<!DOCTYPE html>
<html> <!-- root tag -->
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<!-- DOM : Document Object Model
		๊ฐ tag๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ Object(๊ฐ์ฒด) 
		๊ทธ Object๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜ -->
		
		
	<!-- childNodes -->
	<h3 id="intro">h3 tad id intro</h3>
	<p id="demo">p tag id demo</p>
	
	<button type="button" onclick="func()">๋ฒ„ํŠผ</button>
	
	<script type="text/javascript">
	function func(){
		//let text = document.getElementById('intro').childNodes[0].nodeValue;
		let text = document.getElementById('demo').childNodes[0].nodeValue;
		alert(text);
	}
	</script>
	
<br><br>

<select id="car">
	<option>๋ฒค์ธ </option>
	<option>BMW</option>
	<option>์•„์šฐ๋””</option>
</select>

<button type="button" onclick="cars()">์ž๋™์ฐจ ์„ ํƒ</button>

<script type="text/javascript">

function cars(){
	let carName = document.getElementById("car").childNodes;
	alert(carName[1].text); //ํƒœ๊ทธ๋กœ ๋ฒˆ์ง€์ˆ˜๋ฅผ ๋”ฐ์ง€๊ธฐ๋•Œ๋ฌธ์— ๋ฒค์ธ  1๋ฒˆ์ง€ / ๋ฒค์ธ  ์˜ต์…˜ ๋ฐ– 2๋ฒˆ์ง€ / BMW 3๋ฒˆ์ง€
}

</script>

<br><br>


<!-- appendChild(๋’ค์— ์ถ”๊ฐ€), insertChild(์•ž) -->


<div id="div1">
<p id="p1">์ฒซ๋ฒˆ์งธ pํƒœ๊ทธ</p>
<p id="p2">๋‘๋ฒˆ์งธ pํƒœ๊ทธ</p>
</div>

<button type="button" onclick="appendfunc()">๋’ค์—์ถ”๊ฐ€</button>
<button type="button" onclick="insertfunc()">์•ž์—์ถ”๊ฐ€</button>
<button type="button" onclick="delectfunc()">์‚ญ์ œ</button>

<script type="text/javascript">

function appendfunc(){
	let ptag = document.createElement('p'); // <p></p> ์ถ”๊ฐ€
	let textNode = document.createTextNode("์ƒˆ๋กœ์šด p ํƒœ๊ทธ"); // <p>์•ˆ์— ํ•ด๋‹น ๋ฌธ์ž์—ด์ถ”๊ฐ€
	
	
	ptag.id= 'newid'; //์ƒˆ๋กœ ์ƒ๊ธด ๊ฐ์ฒด
	ptag.className= 'newclass'; // ๋‹ค์‹œ๋ณด๊ธฐ
	
	
	
	
	ptag.appendChild(textNode); //<p>์ƒˆ๋กœ์šด ํƒœ๊ทธ</p> ์ถ”๊ฐ€์™„๋ฃŒ
	
	let element = document.getElementById("div1");
	element.appendChild(ptag);
}

function insertfunc(){
	let h3tag = document.createElement('h3'); // <h3></h3> ์ถ”๊ฐ€
	let textNode = document.createTextNode("์ƒˆ๋กœ์šด h3ํƒœ๊ทธ"); // <h3>์•ˆ์— ํ•ด๋‹น ๋ฌธ์ž์—ด์ถ”๊ฐ€
	
	h3tag.appendChild(textNode);
	
	let element = document.getElementById("div1");
	let elementBefore = document.getElementById("p2"); // p2 ์•ž์—๋‹ค ์ถ”๊ฐ€ํ• ๊ฑฐ์•ผ (์ถ”๊ฐ€ํ•  ์œ„์น˜ ์„ค์ •)
	
	element.insertBefore(h3tag, elementBefore);
	
}


function delectfunc(){
	
	let element = document.getElementById("div1");
	let removeElement = document.getElementById("p2"); // ์ง€์šฐ๊ณ  ์‹ถ์€ id๊ฐ’
	
	element.removeChild(removeElement); //removeChild ํ•จ์ˆ˜๋กœ ์ง€์šฐ๊ณ  ์‹ถ์€ ๊ฐ์ฒด ์‚ญ์ œ
	
	
	
	//์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ์ฒด ์‚ญ์ œ + 
}

</script>


<!-- NodeList -->

<p>Hello</p>
<p>World</p>
<p>I can do it</p>
<p>Never Change My Mind</p>

<button type="button" onclick="listfunc()">Nodelist</button>

<script type="text/javascript">

function listfunc() {
	let nodelist = document.getElementsByTagName("p");
	alert(nodelist.length);
	
	nodelist[3].innerHTML = "์•ˆ๋…•ํ•˜์„ธ์š”";
	
	for (i = 0; i < nodelist.length; i++) {
		nodelist[i].style.backgroundColor="#00ff00";
	}
	
}

</script>

	
</body>
</html>

๋Œ“๊ธ€