โ ์ด ํฌ์คํ ์ ๋ ธ๋ง๋์ฝ๋ - "๋ฐ๋๋ผ JS๋ก ํฌ๋กฌ ์ฑ ๋ง๋ค๊ธฐ๋ฅผ ๋ค์ผ๋ฉด์ ๊นํ๋ธ์ ๊ธฐ๋กํ ํ๊ธฐ๋ฅผ ์ฎ๊ธด ๋ด์ฉ์ ๋๋ค.
๐ ๋ณธ๊ฒฉ์ ์ผ๋ก HTML๊ณผ JS๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ๊ณผ, JS์์ HTML์ ์กฐ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ฐฐ์ ๋ค.๐
๐ฑ JS ์ฌ์ฉํ๋ ์ด์ โ
๐ HTML๊ณผ ์ํธ์์ฉ ํ๊ธฐ ์ํด์
- JS๋ HTML์ element๋ค์ ์์ ์ ๋ฐฉ์์ผ๋ก ์กฐ์ ๊ฐ๋ฅํ๋ค.
- JS๋ก HTML์ ์กฐ์ํ๋ฉด ์๋ HTML ํ์ผ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋
๋ฆฝ์ ์ผ๋ก ์กฐ์ํ ์ ์๋ค.
๐ฑ Document๋ Object โ
๐ document๋ ๋ธ๋ผ์ฐ์ ์ ์ด๋ฏธ ์กด์ฌํ๋ Object
- ์ฝ์ ์ฐฝ์ document๋ฅผ ์ ๋ ฅํ๋ฉด ๊ธด object์์ ์ ์ ์๋ค.
- html์ JS์ ํํ๋ก ๋ณผ ์ ์๋ค. = JS์์ HTML document Object๋ก๋ถํฐ ๋ค์ํ property๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค๐
- document์์๋ ๋งค์ฐ ๋ค์ํ property๊ฐ ์กด์ฌํ๋ค. (ex. location, title, className...)
์๋ Object์์๋ property๋ฅผ ๊ฐ์ง๊ณ ์ฌ ์ ๋ ์๊ณ , ์์ ๋ ๊ฐ๋ฅํ๋ค.๐ค
๐ document๋ Object, ์ฆ, document๋ ์์ property๋ฅผ ์กฐ์ํ ์ ์๋ค.๐ฒ
๐ฅ ์ด๊ฒ์ ๋งค์ฐ ์ค์ํ ํฌ์ธํธ! ๐ฅ
๐ฑ JS์์ HTML ์กฐ์ํ๊ธฐโ
๐ HTML์ ๋ณ๊ฒฝํ์ง ์๊ณ JS์์ ์กฐ์ํ๋ ๋ฐฉ๋ฒ
- HTML์์ ์กฐ์ํ๋ ค๋ ๊ณณ์ id, class ๋ฑ์ ์ค์ ํ๋ค.
- JS์์ document๋ฅผ ํตํด ํญ๋ชฉ๋ค์ ๊ฐ์ ธ์จ๋ค.
- document ํญ๋ชฉ๋ค์ ๋ณ๊ฒฝํ๋ค.
- โ property๋ฅผ ๊ฐ์ ธ์ค๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ (ํจ์)
๋จ, HTML๊ณผ JS์์ ๋์ผํ๊ฒ ํ๊ธฐ๋์ด ์๋ ์์๋ง ๊ฐ์ ธ์ฌ ์ ์๋ค ๐ฅ
- getElementById( ) : id๊ฐ ๋์ผํ ํญ๋ชฉ ์ค ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๊ฐ์ ธ์จ๋ค.
- getElementByCalssName( ) : class๊ฐ ๋์ผํ ํญ๋ชฉ์ ๊ฐ์ ธ์จ๋ค.
- querySelector( ) : ๊ดํธ ์์ ์์์ ๋์ผํ ๊ฒ์ ๊ฐ์ ธ์จ๋ค. element๋ฅผ CSS๋ฐฉ์์ผ๋ก ๊ฒ์ํ ์ ์๋ค.๐
(ex. title, #title, .hello h1) - querySelectorAll( ) : ๊ดํธ ์์ ์์์ ๋์ผํ ๊ฒ์ ๋ชจ๋ ๊ฐ์ ธ์จ๋ค.
- ์์ ์ฝ๋
const title = document.getElementById("title");
// title์ด๋ผ๋ id์ ํญ๋ชฉ์ ๊ฐ์ ธ์จ๋ค.
title.innerHTML = "Got you";
// title ํญ๋ชฉ์ ๋ด๋ถ ๋ด์ฉ์ ๋ณ๊ฒฝ
getElementByClassName(), getElementsByTagName(), getElementsByName() ๐ [] ๋ฅผ ๋ฐํ!
querySelector() ๐ ์ฒซ ๋ฒ์งธ ์์ ํ๋๋ง ๋ฐํ!, ์ฃผ๋ก ์ฌ์ฉํ๋ ํจ์
const title = document.querySelector(".hello");
const title = document.querySelector(".hello:first-child h1"); // ์ด๋ฐ ๊ฒ๋ ๊ฐ๋ฅ
๐ฑ Events
๐ document์ ํจ์์ธ event๋ค์ ์ด์ฉํ์ฌ JS๋ก HTML์ ์กฐ์ํ ์ ์๋ค.
- ๐ document๋ HTML์ด app.js๋ฅผ load ํ๊ธฐ ๋๋ฌธ์ ์กด์ฌํ๋ ๊ฒ์ด๋ค!
- ๋ง์ฝ element์ ๋ด๋ถ๊ฐ ๊ถ๊ธํ๋ค๋ฉด → console.dir( )์ ์ด์ฉํ๋ฉด ๋๋ค.
object๋ก ํ์๋ element๋ฅผ ๋ณด์ฌ์ค๋ค.
console.dir(title);
๐
/**
์ฝ์์์ ๋ณผ ์ ์๋ ๊ฒ
ex. onfocus, onclick, onmouseenter, onmouseleave ...
*/
- object์์ ๋ด์ฉ์ ๋ฐ๊ฟ ์ ์์ง๋ง, ์ ๋ถ ๋ค ๋ฐ๊ฟ ์ ์๋ ๊ฒ์ ์๋๋ค.
- ์ฐ๋ฆฌ๊ฐ listen ํ๊ณ ์ถ์ event๋ฅผ ์ฐพ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ
- ๐ ๋ฐฉ๋ฒ 1 ) ๊ตฌ๊ธ์ ์ฐพ๊ณ ์ถ์ element์ ์ด๋ฆ + mdn์ด๋ผ๊ณ ๊ฒ์ ๐
ex) h1 html element mdn
๊ทธ์ค์ Web APIs๋ผ๋ ๋ฌธ์ฅ์ด ํฌํจ๋ ํ์ด์ง ์ฐพ๊ธฐ!
-
- ๐ ๋ฐฉ๋ฒ 2 ) console.dir(h1)ํด์ on~ ์ผ๋ก ์์ํ๋ property์ธ evnet๋ฅผ ๊ด์ฐฐ ๊ฐ๋ฅ
- ๋ํ์ ์ข
๋ฅ
- click, mouseenter, ์ ๋ ฅ์ ๋๋ด๊ฑฐ๋, ํค๋ณด๋ ํค๋๋ฅผ ๋, wifi ์ ์ ํด์ ๋ ๋...
// style๋ณ๊ฒฝ ์์
title.style.color = "blue"; // ์ด๋ฐ์์ผ๋ก ์ฌ์ฉ
- Event ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ
// title.addEventListener("๋์");
function handleTitleClick() {
console.log("title was clicked!");
title.style.color = "green";
}
title.addEventListener("click", handleTitleClick);
// ํจ์๋ฅผ 2๋ฒ ์งธ ์ธ์๋ก ์ ๋ฌ
- ๐ ์์ ์ฝ๋์์ function์ ์คํํ์ง ์๊ฒ ํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์!!
- (function( ) ์ด๋ ๊ฒ ์ฐ๋ฉด ์ ๋จ๐ โ๏ธ)
// ํจ์ ํธ์ถ?
๐ function( )
ํ์ง๋ง addEventListenr์์๋ ( )๋ก ํธ์ถํ์ง ์๋๋ค.
๐คทโ๏ธโ ์ ๊ทธ๋ ๊น? → ์์๋ฅผ 'ํด๋ฆญ' ํ ๋ JS๊ฐ ํจ์๋ฅผ ํธ์ถํ๊ฒ ๋ง๋ค๊ณ ์ถ์ ๊ฒ,
ํ์์ ํธ์ถํ๋ ค๋ ๊ฒ์ด ์๋๋ค.
h1.addEventListener("mouseleave", handleMouseLeave);
/**
์ฆ, ์ด ์ฝ๋์ ์๋ฏธ๋
๋๊ตฐ๊ฐ h1์ ํด๋ฆญํ๋ฉด handleMouseLeave ํจ์๋ฅผ ์คํํด!
๋ผ๊ณ JS์๊ฒ ์๋ ค์ฃผ๋ ๊ฒ
*/
- โ JS๋ก style์ ๋ณ๊ฒฝํ ์๋ ์์ง๋ง , ์ด๋ก ์ ์ผ๋ก๋ css์์ ํ๋ ๊ฒ์ด ๋ง๋คโ
๐ฑ Event ์ฌ์ฉ๋ฐฉ๋ฒ
๐ event๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์!
- ๐ ์ฒซ ๋ฒ์งธ ๋ฐฉ์
- ๋์ค์ removeEventLister๋ก ์ด๋ฒคํธ ์ญ์ ๋ ๊ฐ๋ฅ
// target.addEventLister("์ด๋ฒคํธ", ์ด๋ฒคํธ ํจ์๋ช
)
title.addEventListener("mouseleave", handleMouseLeave);
- ๐ ๋ ๋ฒ์งธ ๋ฐฉ์
// target.on์ด๋ฒคํธ = ์ด๋ฒคํธ ํจ์๋ช
title.onclick = handleMouseLeave;
- ๐ Web APIs ํ์ธํ ์ ์๋ ์ฃผ์
- document์์ ์ ์ํ์ง ์์๋ ๋ฐ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ ์์
- body, head, title(์๋ ์กด์ฌํ๋ title ์ ๋ชฉ ๋ถ๋ถ)
// ์์
function handleWindowResize() {
document.body.style.backgroundColor = "tomato"
};
window.addEventListener("resize", handleWindowResize);
- clipboard์ ๊ดํ event
- copy, cut, paste
function handleCopy() {
alert("Copier!")
}
window.addEventListener("copy", handleCopy);
- wifi์ ๊ดํ event
- offline, online
function handleOffline() {
alert("๐ฑ SOS No wifi!")
}
function handleOnline() {
alert("๐ Are goooood!")
}
window.addEventListener("offline", handleOffline);
window.addEventListener("online", handleOnline);
๋๊ธ