Bibi's DevLog ๐Ÿค“๐ŸŽ

[์ธํ”„๋Ÿฐ]Javascript์ž…๋ฌธ - DOM์œผ๋กœ ๋ฒ„ํŠผ ์ถ”๊ฐ€ ๋ณธ๋ฌธ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Javascript ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

[์ธํ”„๋Ÿฐ]Javascript์ž…๋ฌธ - DOM์œผ๋กœ ๋ฒ„ํŠผ ์ถ”๊ฐ€

๋น„๋น„ bibi 2020. 10. 22. 18:40
* ์ด ๊ธ€์€ ์ธํ”„๋Ÿฐ์—์„œ ์ œ๊ณตํ•˜๋Š” ํ˜ธ๋ˆ…์Šค๋‹˜์˜ ์œ ๋ฃŒ ๊ฐ•์˜ '์‰ฝ๊ณ  ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐฐ์›Œ๋ณด๋Š” Javascript ์ž…๋ฌธ - ์ฝ”๋“œ์Šค์ฟผ๋“œ ๋งˆ์Šคํ„ฐ์ฆˆ ์ฝ”์Šค ๋ ˆ๋ฒจ1'๋ฅผ ๋“ฃ๊ณ  ๊ณต๋ถ€ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜ ๋‚ด์šฉ์— ๋”ํ•ด, ์ œ๊ฐ€ ํ•„๊ธฐํ•˜๊ณ  ๊ตฌ๊ธ€๋งํ•œ ๋‚ด์šฉ์ด ์ •๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๋ณด์ธ ์ œ๊ฐ€ ์ดํ•ดํ•œ ๋Œ€๋กœ ์ •๋ฆฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ถ€์ •ํ™•ํ•œ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ์„ ๊ฐ์•ˆํ•ด ์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ธํ”„๋Ÿฐ ์ธก ๋‹ต๋ณ€์„ ๋ฐ›์€ ์ ์ด ์žˆ์œผ๋‚˜(https://bibi6666667.tistory.com/37), ์ €์ž‘๊ถŒ์ƒ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค๋ฉด ๋ณดํ˜ธ ๋ชจ๋“œ(๋น„๊ณต๊ฐœ)๋กœ ์ „ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” DOM์„ ํ†ตํ•ด ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•ด ๋ณผ ๊ฒƒ.

- ๊ธฐ์กด element์— ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ์ž์†์„ ์ถ”๊ฐ€ํ•˜๊ธฐ
- ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ

 

์ค€๋น„ํ•˜๊ธฐ

์•„๋ž˜์˜ ๋‚ด์šฉ์ด ํฌํ•จ๋œ html ํŒŒ์ผ์„ ํ•˜๋‚˜ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

<div id="test">๋ฉ”๋‰ดํŒ ์˜ˆ์ œ</div>
<script src="add_button.js"></script>

+ ์—ฐ๊ฒฐํ•  add_button.js๋„ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

console.log("addButton.js");

 

 

DOM์„ ์ด์šฉํ•ด html ๊ฐ์ฒด ์ถ”๊ฐ€ํ•˜๊ธฐ

DOM์œผ๋กœ html์— ๊ฐ์ฒด๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

document.getElementById("");
  ๋ฌธ์„œ ๋‚ด์—์„œ id๊ฐ€ ""์ธ ๋Œ€์ƒ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฉ”์„œ๋“œ..
document.createElement("");
  ""๋‚ด์˜ ์š”์†Œ(=ํƒœ๊ทธ)๋ฅผ ๋งŒ๋“œ๋Š” ๋ฉ”์„œ๋“œ.
๋Œ€์ƒ.innerHTML = "๋„ฃ์„ ๋‚ด์šฉ";
  ๋Œ€์ƒ ์•ˆ์— "๋„ฃ์„ ๋‚ด์šฉ"์„ ๋„ฃ๋Š” ๋ฉ”์„œ๋“œ?
A.appendChild(B); 
  ์ž์‹์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฉ”์„œ๋“œ. A์˜ ํ•˜์œ„์š”์†Œ๋กœ B๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
var test = document.getElementById('test');
test; // <div id="test">๋ฉ”๋‰ดํŒ ์˜ˆ์ œ</div>

// document.createElement(); : ()๋‚ด์˜ ์š”์†Œ(ํƒœ๊ทธ)๋ฅผ ๋งŒ๋“œ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.
var menu = document.createElement('ul'); // ulํƒœ๊ทธ๊ฐ€ ์ƒ๊ธด๋‹ค.
menu; // <ul></ul>

var item1 = document.createElement('li'); // liํƒœ๊ทธ๊ฐ€ ์ƒ๊ธด๋‹ค.
item1; // <li></li>

item1.innerHTML = "์น˜ํ‚จ"; // item1์— ์น˜ํ‚จ์„ ๋„ฃ๋Š”๋‹ค.
item1; // <li>์น˜ํ‚จ</li>

// A.appendChild(B); : ์ž์‹์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฉ”์„œ๋“œ. A์˜ ํ•˜์œ„์š”์†Œ๋กœ B๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
menu.appendChild(item1); // menu์˜ ํ•˜์œ„์š”์†Œ๋กœ item1์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
menu; 
/* <ul>
	<li>์น˜ํ‚จ</li>
   </ul> */

var item2 = document.createElement('li'); 
item2.innerHTML = "์งœ์žฅ๋ฉด"; 
item2; // <li>์งœ์žฅ๋ฉด</li>

menu.appendChild(item2); // menu์˜ ํ•˜์œ„์š”์†Œ๋กœ item2๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
menu; 
/* <ul>
	<li>์น˜ํ‚จ</li>
    <li>์งœ์žฅ๋ฉด</li>
   </ul> */

test; // <div id="test">๋ฉ”๋‰ดํŒ ์˜ˆ์ œ</div>
test.appendChild(menu); // div์˜์—ญ์— menu์˜ ๋‚ด์šฉ์ด ํ•˜์œ„์š”์†Œ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

 

 


 

input ๊ณผ button ์—˜๋ฆฌ๋จผํŠธ(ํƒœ๊ทธ)์˜ ๋™์ž‘ ์ƒ˜ํ”Œ

๋จผ์ € input๊ณผ button์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์ž.

input๊ณผ button์„ ๋„ฃ์€ htmlํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค. dom_button.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>html ์—ฐ์Šต</h1>
<div id="test">๋ฉ”๋‰ดํŒ ์˜ˆ์ œ</div>
<div id="test2">
    input๊ณผ button <br>
    <input id="input1" type="text">
    <button id="btn1">ํ™•์ธ</button>
</div>
<script src="add_button.js"></script>
</body>
</html>

 

<input> : ๋‚ด์šฉ์„ ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํƒœ๊ทธ.
    type="" : ์ž…๋ ฅ๋ฐ›์„ ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์„ ์ •ํ•˜๋Š” ์†์„ฑ. type="text"๋Š” ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅ๋ฐ›์Œ.
<button></button> : ๋ฒ„ํŠผ์„ ๋งŒ๋“œ๋Š” ํƒœ๊ทธ. ๋ฒ„ํŠผ ์ด๋ฆ„์€ ์ฝ˜ํ…์ธ ๋กœ ๋“ค์–ด๊ฐ„๋‹ค. (์—ฌ๋Š”ํƒœ๊ทธ~๋‹ซ๋Š”ํƒœ๊ทธ ์‚ฌ์ด)
โœ” id="" : ๋Œ€์ƒ์— ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ์†์„ฑ.
id๊ฐ’์ด ์žˆ์œผ๋ฉด, id๋ฅผ ํ†ตํ•ด ๊ทธ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค.
id๊ฐ’์€ ์œ ๋‹ˆํฌํ•œ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค. ( ๊ฐ™์€ ํŒŒ์ผ ๋‚ด์— ์ค‘๋ณต๋˜๋Š” id๊ฐ’์ด ์—†์–ด์•ผ ํ•œ๋‹ค )

 

 

// inputํƒœ๊ทธ ๋‚ด์— ์ž…๋ ฅ๋œ ๊ฐ’์„ ์ฝ์–ด์˜ค๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค.
<script>
    var readInput = function() {
        var input = document.getElementById('input1');
        console.log(input.value); 
    };
</script>

// input ์ฐฝ์— ์•„๋ฌด๊ฑฐ๋‚˜ ์ž…๋ ฅํ•˜๊ณ 
readInput(); // ์„ ์ž…๋ ฅํ•˜๋ฉด, input์ฐฝ ์•ˆ์— ์ž…๋ ฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
โœ” input์ฐฝ ์•ˆ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” .value ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 


 

์ง€๊ธˆ์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผ input์ฐฝ ์•ˆ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด์ œ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด, button์„ ๋ˆ„๋ฅด๋ฉด ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ํ•  ๊ฒƒ์ด๋‹ค.
->button ์˜ onclick์ด๋ผ๋Š” ์†์„ฑ์„ ํ™œ์šฉํ•ด์„œ!

์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ˜์†” ์ฐฝ์œผ๋กœ ๋ช…๋ นํ•ด๋„ ๋˜๊ณ , 

// ์ฝ˜์†” ์ฐฝ ๋ฒ„์ „
var btn1 = document.getElementById("btn1");
btn1; // <button id="btn1">ํ™•์ธ</button>

// button์˜ ์†์„ฑ onclick์„ ์‚ฌ์šฉํ•ด ํ•จ์ˆ˜์™€ ๋ฒ„ํŠผ์„ ์—ฐ๊ฒฐํ•œ๋‹ค.
btn1.onclick = readInput; // ํ•จ์ˆ˜๋ช…๋งŒ ์ž‘์„ฑ. ()๋Š” html๋“ฑ์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งŒ ์‚ฌ์šฉ

btn1.onclick = function() {
    console.log("click");
    var input = document.getElementById('input1');
    console.log(input.value);
}

 

์•„๋ž˜์™€ ๊ฐ™์ด html & js ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๊ฐ๊ฐ ์ง์ ‘ ์ž‘์„ฑํ•ด๋„ ๋œ๋‹ค

// html๊ณผ js ๊ฐ๊ฐ์˜ ํŒŒ์ผ๋กœ ๋งŒ๋“  ๋ฒ„์ „.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>html ์—ฐ์Šต</h1>
<div id="test">๋ฒ„ํŠผ ์˜ˆ์ œ
    <input id="input1" type="text">
    <button id="btn1" onclick="readInput()">ํ™•์ธ</button>
</div>
<script src="add_button.js"></script>
</body>
</html>
console.log("addButton.js");
var readInput = function() {
    var input = document.getElementById("input1");
    console.log(input.value);
}

 

์ฝ˜์†” ์ฐฝ์—์„œ ์ง์ ‘ ๋ฒ„ํŠผ์„ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค๊ณ , ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

// ๋ฒ„ํŠผ2๋ฅผ ๋งŒ๋“ ๋‹ค.
var btn2 = document.createElement('button');
btn2.innerHTML = "๋ฒ„ํŠผ2";
btn2; // <button>๋ฒ„ํŠผ2</button>

// ๋ฒ„ํŠผ2์— onclick์œผ๋กœ readInputํ•จ์ˆ˜๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค. (ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์•„๋‹ˆ๋ฏ€๋กœ ()๋Š” ์ ์ง€ ์•Š๋Š”๋‹ค)
btn2.onclick = readInput;
btn2.onclick; 
// function() {
      var input = document.getElementById("input1");
      console.log(input.value);
  }
  
// ๋งŒ๋“  ๋ฒ„ํŠผ2์„ htmlํŒŒ์ผ์˜ div ์˜์—ญ์— ์ถ”๊ฐ€ํ•œ๋‹ค. (div ์•„์ด๋”” = test)
var test = document.getElementByID('test);
test; // <div id="test">...</div>
test.appendChild(btn2);

 

jsํŒŒ์ผ์—์„œ ๋ฒ„ํŠผ์„ ๋งŒ๋“œ๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ•˜๋ฉด ๋œ๋‹ค.

console.log("addButton.js");

var readInput = function() {
    var input = document.getElementById("input1");
    console.log(input.value);
}

var btn2 = document.createElement("button");
btn2.innerHTML = "๋ฒ„ํŠผ2";
btn2.onclick = readInput;
var test = document.getElementById("test");
test.appendChild(document.createElement('br'));
test.appendChild(btn2)

 

โ— btn2.onclick = readInput; ์ฒ˜๋Ÿผ
๋‹จ์ˆœํžˆ ํ•จ์ˆ˜๋ฅผ ์—ฐ๊ฒฐํ•ด ์ค„ ๋•Œ๋Š” ()๋ฅผ ๋ถ™์ผ ํ•„์š”๊ฐ€ ์—†๋‹ค. (ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์•„๋‹Œ ํ•จ์ˆ˜ ์—ฐ๊ฒฐ์ด๊ธฐ ๋•Œ๋ฌธ)
๊ทธ๋Ÿฌ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํŒŒ์ผ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ํŒŒ์ผ (HTML๋“ฑ..)์—์„œ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋งž์œผ๋ฏ€๋กœ
<button onclick="readInput()"></button> ์ฒ˜๋Ÿผ ()๋ฅผ ๋ถ™์—ฌ ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต

DOM์„ ์ด์šฉํ•ด์„œ JS๋กœ ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•ด ๋ด…์‹œ๋‹ค.