Bibi's DevLog ๐ค๐
[์ธํ๋ฐ]Javascript์ ๋ฌธ - DOM์ผ๋ก ๋ฒํผ ์ถ๊ฐ ๋ณธ๋ฌธ
[์ธํ๋ฐ]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๋ก ๋ฒํผ์ ์ถ๊ฐํด ๋ด ์๋ค.