๋ชฉ์ฐจ
-
1. Object (๊ฐ์ฒด)
-
2. DOM (Document Object Model)
-
2-1. DOM(๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ)
-
2-2. innerHTML vs textContent
-
2-3. querySelector vs getElementByID
-
2-4. addEventListener
-
2-5. ์์ 1_counting
-
2-6. ์์ 2_๋ฐ๋ณต๋ฌธ
-
2-7. ์์ 3_keyboardEvent
-
3. function (ํจ์)
-
3-1. ํจ์๋ฅผ ์ ์ธํ๋ ์ธ ๊ฐ์ง ๋ฐฉ์
-
3-2. ์์ 1_plus
-
3-3. ์์ 2_emoji ๋ณ์ฐ๊ธฐ


1. Object (๊ฐ์ฒด)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Object(๊ฐ์ฒด)</title>
</head>
<body>
<script>
/*
* ๊ฐ์ฒด *
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋ฐ์ดํฐ(์์ฑ) &
๋ฐ์ดํฐ์ ๊ด๋ จ๋๋ ๋์(์ ์ฐจ, ๊ธฐ๋ฅ)์ ๋ชจ๋ ํฌํจํ ๊ฐ๋
* ๊ฐ์ฒด์ ๊ตฌ์กฐ *
{key:value, key:value, ...}
key: ๊ฐ์ฒด์ property(์์ฑ) - ๋ฌธ์์ด๋ก ํํ
value: key์ ๊ฐ(๊ธฐ๋ณธ์๋ฃํ, ๋ฐฐ์ด, ํจ์, ๊ฐ์ฒดํ์
๋ฐ์ดํฐ)
(1) ๋ด์ฅ ๊ฐ์ฒด
-> ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ด์ฅ๋ ๊ฐ์ฒด
-> ๋ ์ง, ๋ฌธ์, ๋ฐฐ์ด, ์ํ
*/
// ex) ์ฐ๋๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฐ์ฒด
const moonLanding = new Date();
console.log(moonLanding.getFullYear());
/*
(2) ๋ธ๋ผ์ฐ์ ๊ฐ์ฒด (BOM, browser object model)
-> ๋ธ๋ผ์ฐ์ ์์ ๋ด์ฅ๋ ๊ฐ์ฒด
-> alert(), console.log(), ...
-> window(): ๋ธ๋ผ์ฐ์ ๊ฐ์ฒด ์ค ์ต์์ ๊ฐ์ฒด, ๋ธ๋ผ์ฐ์ ์ ๊ด๋ จ๋ ๊ธฐ๋ฅ
-> window.open("http://www.naver.com", "๋ค์ด๋ฒ ๋ฐ์๋ผ", "width=500px; height=500px")
(+) ๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ
-> ์น๋ฌธ์๋ฅผ ์ ์ดํ ์ ์๋ ๊ฐ์ฒด
(3) ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด
-> ์ฌ์ฉ์๊ฐ ์ง์ ๋ง๋ ๊ฐ์ฒด
-> ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๊ตฌ๋๋๋ ์์ ์ ์์ฑ
*/
// ex) ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด
let person = {
"name" : "dain",
"Age" : 50,
"gender" : "female",
"info" : function() {
console.log(this);
}
}
// person ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ๋ ํจ์ ์คํํ๊ธฐ
console.log(person.name);
person.info();
console.log(person);
</script>
</body>
</html>

2. DOM (Document Object Model)



2-1. DOM(๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DOM(๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ)</title>
</head>
<body>
<h1 id="tit">๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ(DOM)</h1>
<ul>
<li class="items">HTML</li>
<li class="items">CSS</li>
<li class="items">JS</li>
</ul>
<script>
/*
DOM(๋ฌธ์๊ฐ์ฒด ๋ชจ๋ธ): html ํ๊ทธ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ์ฒด๋ก ๋ณํ
* HTML ๋ฌธ์์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ *
document: ํ์ฌ HTML ๋ฌธ์์
.: ์ ๊ทผํด์
getElement: ์์๋ฅผ ๊ฐ์ ธ์ฌ๊ฑฐ์ผ
ByID: "tit"๋ผ๋ id ๊ฐ์ ๊ฐ์ง
*/
let title = document.querySelector("tit");
let anotherTitle = document.getElementById("tit");
console.log(title);
console.log(anotherTitle);
/*
document: ํ์ฌ HTML ๋ฌธ์์
.: ์ ๊ทผํด์
getElements: ์์๋ค์ ๊ฐ์ ธ์ฌ๊ฑฐ์ผ
ByClassName: "itmes"๋ผ๋ class ๊ฐ์ ๊ฐ์ง */
let items = document.getElementsByClassName("item");
console.log(items);
</script>
</body>
</html>


2-2. innerHTML vs textContent
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DOM innerHTML and textContent</title>
</head>
<body>
<p id="msg">์ค๋์ ๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ์ ๋ํด์ ๋ฐฐ์๋ณด์๋ค</p>
<script>
let msg = document.getElementById("msg");
// ํ๊ทธ + ๋ด์ฉ ๊น์ง ์ฝ์์ ํต์งธ๋ก ์ฐํ
console.log(msg);
// html ํ๊ทธ์ ๊ฐ์ด ๋ด์ฉ์ ์ ์ฉํ ๋: innerHTML
// ํ
์คํธ ๋ด์ฉ๋ง ์ ์ฉํ ๋: textContent
// pํ๊ทธ์ ์ ์ฒด ๋ด์ฉ ์ ๊ทผ
// ํ๊ทธ ์์ชฝ ํ
์คํธ๋ง ์ฐํ
console.log(msg.innerHTML);
// pํ๊ทธ์ ์ ์ฒด๋ด์ฉ ๋ณ๊ฒฝ
// ํ๊ทธ ์์ชฝ ๊ธ์จ๊ฐ ๋ฐ๋
msg.innerHTML = "๋ด์ฉ ๋ฐ๋๊ฑฐ ๋ด๋ผ~ใ
ใ
ใ
์ ๊ธฐํ์ง?"
console.log(msg.innerHTML);
// pํ๊ทธ ์์ชฝ ๋ด์ฉ์ ํ๊ทธ ํ๋ ์ถ๊ฐ
msg.innerHTML += "<span> ์ด๋ฐ๊ฒ๋ ๊ฐ๋ฅ~</span>"
// pํ๊ทธ์ ํ
์คํธ ๊ฐ ์ ๊ทผ
console.log(msg.innerHTML);
// pํ๊ทธ์ ํ
์คํธ ๊ฐ ๋ณ๊ฒฝ
msg.textContent = "ํ
์คํธ ๋ฐ๋๋๊ฑฐ ๋ฃฉ์ณ๋ฏธ"
msg.textContent = "<span> + ์์ฐ! ํ
์คํธ ๋ฐ๋๋น >_< + </span>";
</script>
</body>
</html>


2-3. querySelector vs getElementByID
์์ฆ์๋ ์ด์ฐจํผ ๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฐ์ง๋ง
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dom querySelector and getElementByID</title>
</head>
<body>
<h1 id="bb">DOM ํ์ฉํด๋ณด๊ธฐ</h1>
<button id="btn-h1">h1ํ๊ทธ ๋ด์ฉ ๋ณ๊ฒฝ</button>
<button id="btn-a">a ํ๊ทธ ์์ฑ</button>
<button id="btn-ul">ulํ๊ทธ ์์ฑ</button>
<div id="area"></div>
<script>
// 1. h1 ๋ด์ฉ๋ณ๊ฒฝ ๋ฒํฐ์ ํด๋ฆญํ๋ฉด ๊ธฐ์กด h1 ํ๊ทธ์ ๋ด์ฉ์ด "๋ด์ฉ ์ ๋ฐ๋์๋ค!" ๋ก ๋ฐ๋๊ฒ ํ์ง
// 2. aํ๊ทธ์์ฑ ๋ฒํผ์ ํด๋ฆญํ๋ฉด div์ [google.com]๋ก ์ด๋ํ๋ aํ๊ทธ ์์ฑ
// 3. ulํ๊ทธ์์ฑ ๋ฒํผ์ ํด๋ฆญํ๋ฉด div์ html, css, javascript๋ฅผ ๋ด๋ ul ๋ฆฌ์คํธ๋ฅผ ์์ฑ
let btn1 = document.querySelector("#btn-h1");
btn1.addEventListener("click", function(){
document.querySelector("h1").textContent = "๋ด์ฉ ์ ๋ฐ๋์๋ค!"
});
let btn2 = document.querySelector("#btn-a");
btn2.addEventListener("click", function(){
document.getElementById("area").innerHTML += "<a href=https://google.com>๊ตฌ๊ธ</a>"
});
let btn3 = document.querySelector("#btn-ul");
btn3.addEventListener("click", function(){
document.getElementById("area").innerHTML +=
`<ul>
<li>html</li>
<li>css</li>
<li>js</li>
</ul>`
});
// * getElementByID vs querySelector *
// ์ง์๋๋ ์ ํ์:
// getElementByID: ์ค์ง id ์ ํ์๋ง ์ง์ํ๋ค.
// querySelector: id, class, tag ๋ฑ ๋ค์ํ CSS ์ ํ์๋ฅผ ์ง์ํ๋ค.
// ๊ฒฐ๋ก :
// ๋ง์ฝ id๋ก ์์๋ฅผ ์ฐพ๊ณ ์ ํ๋ค๋ฉด getElementByID๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
// ์ฌ๋ฌ ์ ํ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ ์ฐํ๊ฒ ์์๋ฅผ ์ฐพ๊ณ ์ถ๋ค๋ฉด, querySelector์ ์ฌ์ฉํ๋๊ฒ์ด ์ข๋ค.
</script>
</body>
</html>




2-4. addEventListener
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DOM addEventListener</title>
</head>
<body>
<input type="text" id="user-input">
<button id="btn">๋๋ฒํผ์ด์ง๋กฑ</button>
<script>
let userinput = document.getElementById("user-input");
let btn = document.getElementById("btn");
// ์์์ ์ด๋ฒคํธ ์ ์ฉํ๋๋ฒ
// (์ด๋ฒคํธ: ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋์ํ๋ ํ์ -- ํด๋ฆญ, ์คํฌ๋กค, ๋ง์ฐ์ค์ค๋ฒ, ํค๋ณด๋ ์
๋ ฅ ๋ฑ)
// ์ด๋ฒคํธ ํธ๋ค๋ฌ(์ฝ๋ฐฑํจ์): ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์ฒ๋ฆฌํ ํจ์
btn.addEventListener("click", function(){
// alert("ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ์")
// ์ ์ ๊ฐ ์
๋ ฅํ ๊ฐ์ console ์ฐฝ์ ์
๋ ฅํ๋
// input.select.textArea์ ๊ฐ์ ์ ๊ทผํ ๋: value
console.log(userinput.value);
})
</script>
</body>
</html>


2-5. ์์ 1_counting
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DOM counting</title>
</head>
<body>
<p id="num">0</p>
<button id="btn-plus">์ฆ๊ฐ</button>
<button id="btn-minus">๊ฐ์</button>
<script>
let num = document.getElementById("num");
let plus = document.querySelector("#btn-plus");
let minus = document.querySelector("#btn-minus")
plus.addEventListener("click", function(){
let i = Number(num.textContent)
i += 1;
num.textContent = i;
});
minus.addEventListener("click", function(){
let i = Number(num.textContent)
i -= 1;
if (i <= 0) {
i = 0;
};
num.textContent = i;
});
</script>
</body>
</html>

2-6. ์์ 2_๋ฐ๋ณต๋ฌธ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dom repeat</title>
</head>
<body>
<input type="text" id="user-input">
<button id="btn-plus">์ถ๋ ฅ</button><br>
<div id="result"></div>
<script>
document.querySelector("#btn-plus").addEventListener("click", function(){
document.querySelector("#result").innerHTML += "<p>" + document.querySelector("#user-input").value+"</p>"
});
</script>
</body>
</html>

2-7. ์์ 3_keyboardEvent
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DOM keyboardEvent</title>
<style>
/* ์คํ์ผ๋ง๋ ๋ฐ์ค */
#box {
width: 50px;
height: 50px;
background-color: rgb(255, 14, 14);
position: absolute;
top: 50px;
left: 50px;
}
</style>
</head>
<body>
<!-- ์์ง์ด๋ ๋ฐ์ค -->
<div id="box"></div>
<script>
// ํค ์
๋ ฅ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ถ๊ฐ
document.addEventListener("keydown", function(event) {
let box = document.getElementById("box"); // ๋ฐ์ค ์์ ๊ฐ์ ธ์ค๊ธฐ
let step = 10; // ์ด๋ ๊ฑฐ๋ฆฌ ์ง์
let top = parseInt(window.getComputedStyle(box).top); // ํ์ฌ top ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
let left = parseInt(window.getComputedStyle(box).left); // ํ์ฌ left ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
// ํค ์
๋ ฅ์ ๋ฐ๋ผ ๋ฐ์ค ์ด๋
switch (event.key) {
case "w": // ์๋ก ์ด๋
box.style.top = top - step + "px";
break;
case "s": // ์๋๋ก ์ด๋
box.style.top = top + step + "px";
break;
case "a": // ์ผ์ชฝ์ผ๋ก ์ด๋
box.style.left = left - step + "px";
break;
case "d": // ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
box.style.left = left + step + "px";
break;
}
});
</script>
</body>
</html>


3. function (ํจ์)
3-1. ํจ์๋ฅผ ์ ์ธํ๋ ์ธ ๊ฐ์ง ๋ฐฉ์
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>function</title>
</head>
<body>
<script>
/*
ํจ์: ํน๋ณํ ๋ชฉ์ ์ ์์
์ ์ํํ๊ธฐ ์ํด ๋
๋ฆฝ์ ์ผ๋ก ์ค๊ณ๋ ๋ธ๋ญ
- ๋ด๊ฐ ํธํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ๋ง๋๋ ใฑ๋ใ
กใ
- ํจ์๋ฅผ ์ ์ํ ๋๋ input(์
๋ ฅ, ๋งค๊ฐ๋ณ์), output(์ถ๋ ฅ, ๋ฐํ๋ฐ์ดํฐ)
ํจ์๋ฅผ ์ ์ธํ๋ ์ธ ๊ฐ์ง ๋ฐฉ์
- ํจ์์ ์ธ๋ฌธ
- ํจ์ํํ์
- ํ์ดํํจ์
*/
// (1) ํจ์์ ์ธ๋ฌธ
// - ํจ์ ์ ์ธ๋ฌธ์ผ๋ก ์ ์ํ ํ ํจ์ ํธ์ถ ์ ์ด๋์์๋ ํธ์ถ์ด ๊ฐ๋ฅํ๋ค
// โ
ํจ์ ํธ์ด์คํ
โ
// - ํจ์ ์ ์ธ๋ฌธ์ด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ํด์ ๋จผ์ ์คํ๋๋ ๋ฐฉ์
// - ์์น ์๋ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ์ต๊ทผ ํธ๋ ๋๋ ํจ์ํํ์(+ํ์ดํ ํจ์)๋ฅผ ์ฑํํ๊ณ ์๋ค.
function greet() {
console.log("ํจ์์ ์ธ๋ฌธgo");
}
greet();
// (2) ํจ์ํํ์
// - ํจ์๋ฅผ ๊ฐ์ผ๋ก ์ทจ๊ธ
const greet2 = function () {
console.log("ํจ์ํํ์ ์๋ด");
}
greet2();
// (3) ํ์ดํํจ์
let greet3 = (name) => {
console.log("ํ์ดํ ํจ์ ์ด๊ฒ ์ฐ!");
return(console.log(name));
}
greet3("๋ค์ธ");
// return์ด ์์ ๋, ์คํ๋ฌธ์ด ํ ๋ฌธ์ฅ์ผ ๊ฒฝ์ฐ์๋ return๊ณผ {} ์๋ต ๊ฐ๋ฅ
let greet4 = (name) => ("์๋
ํ์ธ์?" + name);
console.log(greet4("๋ค์ธ"));
</script>
</body>
</html>

3-2. ์์ 1_plus
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>function plus</title>
</head>
<body>
<div id="result">๊ฒฐ๊ณผํ์ธ</div>
<script>
let num1 = Number(prompt("์ฒซ ๋ฒ์งธ ์ ์ ์
๋ ฅ"));
let num2 = Number(prompt("๋ ๋ฒ์งธ ์ ์ ์
๋ ฅ"));
const add = function(num1, num2) {
console.log(num1 + num2);
return num1 + num2;
}
let addadd = (num1, num2) => {
console.log(num1 + num2);
return num1 + num2;
}
document.querySelector("#result").addEventListener("mouseover", function(){
console.log(add(num1, num2));
alert(add(num1, num2));
})
</script>
</body>
</html>



3-3. ์์ 2_emoji ๋ณ์ฐ๊ธฐ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>function emoji</title>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
<div class="emo">์ถ๋ ฅ๋๋ ์ด๋ชจ์ง: </div>
<div class="num">์ซ์: </div>
<br>
<script>
/*
๋ฌธ์ ) ์ด๋ชจ์ง์ ์ซ์๋ฅผ ์
๋ ฅ๋ฐ์ ํ ํผ๋ผ๋ฏธ๋ ๋ชจ์์ ์ถ๋ ฅํ๋ pyramid()
1. ์ด๋ชจ์ง์ ์ซ์๋ฅผ ์
๋ ฅ๋ฐ๋๋ค.
2. ๋ ์
๋ ฅ๊ฐ์ pyramid() ์ ์ ๋ฌํ๋ค
3. ์ ๋ฌ๋ฐ์ ๊ฐ์ ์ด์ฉํ์ฌ ํผ๋ผ๋ฏธ๋ ๋ชจ์์ ์ถ๋ ฅํ๋ค.
*/
let emoji = prompt("์ด๋ชจ์ง๋ฅผ๋ฅผ ์
๋ ฅํ์ธ์.");
let num1 = Number(prompt("์ซ์๋ฅผ ์
๋ ฅํ์ธ์."));
// ex) โ
, 5
$(".emo").append(emoji);
$(".num").append(num1);
let pyramid = (emoji, num1) => {
for (let i=0; i<num1; i++) {
for (let j=0; j<=i; j++) {
document.write(emoji);
}
document.write("<br>");
}
}
pyramid(emoji, num1);
</script>
</body>
</html>





'ํ๋ก๊ทธ๋๋ฐ์ธ์ด > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ


1. Object (๊ฐ์ฒด)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Object(๊ฐ์ฒด)</title> </head> <body> <script> /* * ๊ฐ์ฒด * ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋ฐ์ดํฐ(์์ฑ) & ๋ฐ์ดํฐ์ ๊ด๋ จ๋๋ ๋์(์ ์ฐจ, ๊ธฐ๋ฅ)์ ๋ชจ๋ ํฌํจํ ๊ฐ๋
* ๊ฐ์ฒด์ ๊ตฌ์กฐ * {key:value, key:value, ...} key: ๊ฐ์ฒด์ property(์์ฑ) - ๋ฌธ์์ด๋ก ํํ value: key์ ๊ฐ(๊ธฐ๋ณธ์๋ฃํ, ๋ฐฐ์ด, ํจ์, ๊ฐ์ฒดํ์
๋ฐ์ดํฐ) (1) ๋ด์ฅ ๊ฐ์ฒด -> ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ด์ฅ๋ ๊ฐ์ฒด -> ๋ ์ง, ๋ฌธ์, ๋ฐฐ์ด, ์ํ */ // ex) ์ฐ๋๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฐ์ฒด const moonLanding = new Date(); console.log(moonLanding.getFullYear()); /* (2) ๋ธ๋ผ์ฐ์ ๊ฐ์ฒด (BOM, browser object model) -> ๋ธ๋ผ์ฐ์ ์์ ๋ด์ฅ๋ ๊ฐ์ฒด -> alert(), console.log(), ... -> window(): ๋ธ๋ผ์ฐ์ ๊ฐ์ฒด ์ค ์ต์์ ๊ฐ์ฒด, ๋ธ๋ผ์ฐ์ ์ ๊ด๋ จ๋ ๊ธฐ๋ฅ -> window.open("http://www.naver.com", "๋ค์ด๋ฒ ๋ฐ์๋ผ", "width=500px; height=500px") (+) ๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ -> ์น๋ฌธ์๋ฅผ ์ ์ดํ ์ ์๋ ๊ฐ์ฒด (3) ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด -> ์ฌ์ฉ์๊ฐ ์ง์ ๋ง๋ ๊ฐ์ฒด -> ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๊ตฌ๋๋๋ ์์ ์ ์์ฑ */ // ex) ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด let person = { "name" : "dain", "Age" : 50, "gender" : "female", "info" : function() { console.log(this); } } // person ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ๋ ํจ์ ์คํํ๊ธฐ console.log(person.name); person.info(); console.log(person); </script> </body> </html>

2. DOM (Document Object Model)



2-1. DOM(๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM(๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ)</title> </head> <body> <h1 id="tit">๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ(DOM)</h1> <ul> <li class="items">HTML</li> <li class="items">CSS</li> <li class="items">JS</li> </ul> <script> /* DOM(๋ฌธ์๊ฐ์ฒด ๋ชจ๋ธ): html ํ๊ทธ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ์ฒด๋ก ๋ณํ * HTML ๋ฌธ์์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ * document: ํ์ฌ HTML ๋ฌธ์์ .: ์ ๊ทผํด์ getElement: ์์๋ฅผ ๊ฐ์ ธ์ฌ๊ฑฐ์ผ ByID: "tit"๋ผ๋ id ๊ฐ์ ๊ฐ์ง */ let title = document.querySelector("tit"); let anotherTitle = document.getElementById("tit"); console.log(title); console.log(anotherTitle); /* document: ํ์ฌ HTML ๋ฌธ์์ .: ์ ๊ทผํด์ getElements: ์์๋ค์ ๊ฐ์ ธ์ฌ๊ฑฐ์ผ ByClassName: "itmes"๋ผ๋ class ๊ฐ์ ๊ฐ์ง */ let items = document.getElementsByClassName("item"); console.log(items); </script> </body> </html>


2-2. innerHTML vs textContent
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM innerHTML and textContent</title> </head> <body> <p id="msg">์ค๋์ ๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ์ ๋ํด์ ๋ฐฐ์๋ณด์๋ค</p> <script> let msg = document.getElementById("msg"); // ํ๊ทธ + ๋ด์ฉ ๊น์ง ์ฝ์์ ํต์งธ๋ก ์ฐํ console.log(msg); // html ํ๊ทธ์ ๊ฐ์ด ๋ด์ฉ์ ์ ์ฉํ ๋: innerHTML // ํ
์คํธ ๋ด์ฉ๋ง ์ ์ฉํ ๋: textContent // pํ๊ทธ์ ์ ์ฒด ๋ด์ฉ ์ ๊ทผ // ํ๊ทธ ์์ชฝ ํ
์คํธ๋ง ์ฐํ console.log(msg.innerHTML); // pํ๊ทธ์ ์ ์ฒด๋ด์ฉ ๋ณ๊ฒฝ // ํ๊ทธ ์์ชฝ ๊ธ์จ๊ฐ ๋ฐ๋ msg.innerHTML = "๋ด์ฉ ๋ฐ๋๊ฑฐ ๋ด๋ผ~ใ
ใ
ใ
์ ๊ธฐํ์ง?" console.log(msg.innerHTML); // pํ๊ทธ ์์ชฝ ๋ด์ฉ์ ํ๊ทธ ํ๋ ์ถ๊ฐ msg.innerHTML += "<span> ์ด๋ฐ๊ฒ๋ ๊ฐ๋ฅ~</span>" // pํ๊ทธ์ ํ
์คํธ ๊ฐ ์ ๊ทผ console.log(msg.innerHTML); // pํ๊ทธ์ ํ
์คํธ ๊ฐ ๋ณ๊ฒฝ msg.textContent = "ํ
์คํธ ๋ฐ๋๋๊ฑฐ ๋ฃฉ์ณ๋ฏธ" msg.textContent = "<span> + ์์ฐ! ํ
์คํธ ๋ฐ๋๋น >_< + </span>"; </script> </body> </html>


2-3. querySelector vs getElementByID
์์ฆ์๋ ์ด์ฐจํผ ๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฐ์ง๋ง
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Dom querySelector and getElementByID</title> </head> <body> <h1 id="bb">DOM ํ์ฉํด๋ณด๊ธฐ</h1> <button id="btn-h1">h1ํ๊ทธ ๋ด์ฉ ๋ณ๊ฒฝ</button> <button id="btn-a">a ํ๊ทธ ์์ฑ</button> <button id="btn-ul">ulํ๊ทธ ์์ฑ</button> <div id="area"></div> <script> // 1. h1 ๋ด์ฉ๋ณ๊ฒฝ ๋ฒํฐ์ ํด๋ฆญํ๋ฉด ๊ธฐ์กด h1 ํ๊ทธ์ ๋ด์ฉ์ด "๋ด์ฉ ์ ๋ฐ๋์๋ค!" ๋ก ๋ฐ๋๊ฒ ํ์ง // 2. aํ๊ทธ์์ฑ ๋ฒํผ์ ํด๋ฆญํ๋ฉด div์ [google.com]๋ก ์ด๋ํ๋ aํ๊ทธ ์์ฑ // 3. ulํ๊ทธ์์ฑ ๋ฒํผ์ ํด๋ฆญํ๋ฉด div์ html, css, javascript๋ฅผ ๋ด๋ ul ๋ฆฌ์คํธ๋ฅผ ์์ฑ let btn1 = document.querySelector("#btn-h1"); btn1.addEventListener("click", function(){ document.querySelector("h1").textContent = "๋ด์ฉ ์ ๋ฐ๋์๋ค!" }); let btn2 = document.querySelector("#btn-a"); btn2.addEventListener("click", function(){ document.getElementById("area").innerHTML += "<a href=https://google.com>๊ตฌ๊ธ</a>" }); let btn3 = document.querySelector("#btn-ul"); btn3.addEventListener("click", function(){ document.getElementById("area").innerHTML += `<ul> <li>html</li> <li>css</li> <li>js</li> </ul>` }); // * getElementByID vs querySelector * // ์ง์๋๋ ์ ํ์: // getElementByID: ์ค์ง id ์ ํ์๋ง ์ง์ํ๋ค. // querySelector: id, class, tag ๋ฑ ๋ค์ํ CSS ์ ํ์๋ฅผ ์ง์ํ๋ค. // ๊ฒฐ๋ก : // ๋ง์ฝ id๋ก ์์๋ฅผ ์ฐพ๊ณ ์ ํ๋ค๋ฉด getElementByID๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. // ์ฌ๋ฌ ์ ํ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ ์ฐํ๊ฒ ์์๋ฅผ ์ฐพ๊ณ ์ถ๋ค๋ฉด, querySelector์ ์ฌ์ฉํ๋๊ฒ์ด ์ข๋ค. </script> </body> </html>




2-4. addEventListener
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM addEventListener</title> </head> <body> <input type="text" id="user-input"> <button id="btn">๋๋ฒํผ์ด์ง๋กฑ</button> <script> let userinput = document.getElementById("user-input"); let btn = document.getElementById("btn"); // ์์์ ์ด๋ฒคํธ ์ ์ฉํ๋๋ฒ // (์ด๋ฒคํธ: ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋์ํ๋ ํ์ -- ํด๋ฆญ, ์คํฌ๋กค, ๋ง์ฐ์ค์ค๋ฒ, ํค๋ณด๋ ์
๋ ฅ ๋ฑ) // ์ด๋ฒคํธ ํธ๋ค๋ฌ(์ฝ๋ฐฑํจ์): ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์ฒ๋ฆฌํ ํจ์ btn.addEventListener("click", function(){ // alert("ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ์") // ์ ์ ๊ฐ ์
๋ ฅํ ๊ฐ์ console ์ฐฝ์ ์
๋ ฅํ๋ // input.select.textArea์ ๊ฐ์ ์ ๊ทผํ ๋: value console.log(userinput.value); }) </script> </body> </html>


2-5. ์์ 1_counting
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM counting</title> </head> <body> <p id="num">0</p> <button id="btn-plus">์ฆ๊ฐ</button> <button id="btn-minus">๊ฐ์</button> <script> let num = document.getElementById("num"); let plus = document.querySelector("#btn-plus"); let minus = document.querySelector("#btn-minus") plus.addEventListener("click", function(){ let i = Number(num.textContent) i += 1; num.textContent = i; }); minus.addEventListener("click", function(){ let i = Number(num.textContent) i -= 1; if (i <= 0) { i = 0; }; num.textContent = i; }); </script> </body> </html>

2-6. ์์ 2_๋ฐ๋ณต๋ฌธ
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Dom repeat</title> </head> <body> <input type="text" id="user-input"> <button id="btn-plus">์ถ๋ ฅ</button><br> <div id="result"></div> <script> document.querySelector("#btn-plus").addEventListener("click", function(){ document.querySelector("#result").innerHTML += "<p>" + document.querySelector("#user-input").value+"</p>" }); </script> </body> </html>

2-7. ์์ 3_keyboardEvent
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM keyboardEvent</title> <style> /* ์คํ์ผ๋ง๋ ๋ฐ์ค */ #box { width: 50px; height: 50px; background-color: rgb(255, 14, 14); position: absolute; top: 50px; left: 50px; } </style> </head> <body> <!-- ์์ง์ด๋ ๋ฐ์ค --> <div id="box"></div> <script> // ํค ์
๋ ฅ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ถ๊ฐ document.addEventListener("keydown", function(event) { let box = document.getElementById("box"); // ๋ฐ์ค ์์ ๊ฐ์ ธ์ค๊ธฐ let step = 10; // ์ด๋ ๊ฑฐ๋ฆฌ ์ง์ let top = parseInt(window.getComputedStyle(box).top); // ํ์ฌ top ๊ฐ ๊ฐ์ ธ์ค๊ธฐ let left = parseInt(window.getComputedStyle(box).left); // ํ์ฌ left ๊ฐ ๊ฐ์ ธ์ค๊ธฐ // ํค ์
๋ ฅ์ ๋ฐ๋ผ ๋ฐ์ค ์ด๋ switch (event.key) { case "w": // ์๋ก ์ด๋ box.style.top = top - step + "px"; break; case "s": // ์๋๋ก ์ด๋ box.style.top = top + step + "px"; break; case "a": // ์ผ์ชฝ์ผ๋ก ์ด๋ box.style.left = left - step + "px"; break; case "d": // ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ box.style.left = left + step + "px"; break; } }); </script> </body> </html>


3. function (ํจ์)
3-1. ํจ์๋ฅผ ์ ์ธํ๋ ์ธ ๊ฐ์ง ๋ฐฉ์
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>function</title> </head> <body> <script> /* ํจ์: ํน๋ณํ ๋ชฉ์ ์ ์์
์ ์ํํ๊ธฐ ์ํด ๋
๋ฆฝ์ ์ผ๋ก ์ค๊ณ๋ ๋ธ๋ญ - ๋ด๊ฐ ํธํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ๋ง๋๋ ใฑ๋ใ
กใ
- ํจ์๋ฅผ ์ ์ํ ๋๋ input(์
๋ ฅ, ๋งค๊ฐ๋ณ์), output(์ถ๋ ฅ, ๋ฐํ๋ฐ์ดํฐ) ํจ์๋ฅผ ์ ์ธํ๋ ์ธ ๊ฐ์ง ๋ฐฉ์ - ํจ์์ ์ธ๋ฌธ - ํจ์ํํ์ - ํ์ดํํจ์ */ // (1) ํจ์์ ์ธ๋ฌธ // - ํจ์ ์ ์ธ๋ฌธ์ผ๋ก ์ ์ํ ํ ํจ์ ํธ์ถ ์ ์ด๋์์๋ ํธ์ถ์ด ๊ฐ๋ฅํ๋ค // โ
ํจ์ ํธ์ด์คํ
โ
// - ํจ์ ์ ์ธ๋ฌธ์ด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ํด์ ๋จผ์ ์คํ๋๋ ๋ฐฉ์ // - ์์น ์๋ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ์ต๊ทผ ํธ๋ ๋๋ ํจ์ํํ์(+ํ์ดํ ํจ์)๋ฅผ ์ฑํํ๊ณ ์๋ค. function greet() { console.log("ํจ์์ ์ธ๋ฌธgo"); } greet(); // (2) ํจ์ํํ์ // - ํจ์๋ฅผ ๊ฐ์ผ๋ก ์ทจ๊ธ const greet2 = function () { console.log("ํจ์ํํ์ ์๋ด"); } greet2(); // (3) ํ์ดํํจ์ let greet3 = (name) => { console.log("ํ์ดํ ํจ์ ์ด๊ฒ ์ฐ!"); return(console.log(name)); } greet3("๋ค์ธ"); // return์ด ์์ ๋, ์คํ๋ฌธ์ด ํ ๋ฌธ์ฅ์ผ ๊ฒฝ์ฐ์๋ return๊ณผ {} ์๋ต ๊ฐ๋ฅ let greet4 = (name) => ("์๋
ํ์ธ์?" + name); console.log(greet4("๋ค์ธ")); </script> </body> </html>

3-2. ์์ 1_plus
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>function plus</title> </head> <body> <div id="result">๊ฒฐ๊ณผํ์ธ</div> <script> let num1 = Number(prompt("์ฒซ ๋ฒ์งธ ์ ์ ์
๋ ฅ")); let num2 = Number(prompt("๋ ๋ฒ์งธ ์ ์ ์
๋ ฅ")); const add = function(num1, num2) { console.log(num1 + num2); return num1 + num2; } let addadd = (num1, num2) => { console.log(num1 + num2); return num1 + num2; } document.querySelector("#result").addEventListener("mouseover", function(){ console.log(add(num1, num2)); alert(add(num1, num2)); }) </script> </body> </html>



3-3. ์์ 2_emoji ๋ณ์ฐ๊ธฐ
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>function emoji</title> </head> <body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script> <div class="emo">์ถ๋ ฅ๋๋ ์ด๋ชจ์ง: </div> <div class="num">์ซ์: </div> <br> <script> /* ๋ฌธ์ ) ์ด๋ชจ์ง์ ์ซ์๋ฅผ ์
๋ ฅ๋ฐ์ ํ ํผ๋ผ๋ฏธ๋ ๋ชจ์์ ์ถ๋ ฅํ๋ pyramid() 1. ์ด๋ชจ์ง์ ์ซ์๋ฅผ ์
๋ ฅ๋ฐ๋๋ค. 2. ๋ ์
๋ ฅ๊ฐ์ pyramid() ์ ์ ๋ฌํ๋ค 3. ์ ๋ฌ๋ฐ์ ๊ฐ์ ์ด์ฉํ์ฌ ํผ๋ผ๋ฏธ๋ ๋ชจ์์ ์ถ๋ ฅํ๋ค. */ let emoji = prompt("์ด๋ชจ์ง๋ฅผ๋ฅผ ์
๋ ฅํ์ธ์."); let num1 = Number(prompt("์ซ์๋ฅผ ์
๋ ฅํ์ธ์.")); // ex) โ
, 5 $(".emo").append(emoji); $(".num").append(num1); let pyramid = (emoji, num1) => { for (let i=0; i<num1; i++) { for (let j=0; j<=i; j++) { document.write(emoji); } document.write("<br>"); } } pyramid(emoji, num1); </script> </body> </html>




