๐ ์๋ฐ์คํฌ๋ฆฝํธ HTML DOM ๊ฐ์ฒด
๐ง ๋ค์ด๊ฐ๊ธฐ์ ์..
์น๊ฐ๋ฐ ํ ๋ ํ์์ธ HTML DOM์ ๋ํด์ ์์๋ด
์๋ค!! ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(Document Object Model)์ HTML๋ฌธ์ ๋๋ XML๋ฌธ์๋ฑ์ ์ ๊ทผํ๊ธฐ ์ํ ์ผ์ข
์ ์ธํฐํ์ด์ค ์ญํ ์ ํฉ๋๋ค. ๋ฌธ์๋ด์ ๋ชจ๋ ์์๋ฅผ ์ ์ํ๊ณ ๊ฐ๊ฐ์ ์์์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณต ํฉ๋๋ค.
๐ document ๊ฐ์ฒด
- ์น ํ์ด์ง ์์ฒด(body)๋ฅผ ์๋ฏธํ๋ ๊ฐ์ฒด
- ์น ํ์ด์ง์ ์กด์ฌํ๋ HTML ์์์ ์ ๊ทผํ๊ณ ์ ํ ๋ ๋ฐ๋์ document ๊ฐ์ฒด๋ก๋ถํฐ ์์
document ๊ฐ์ฒด์ ๋ฉ์๋
- getElementsByTagName(): ํด๋น ํ๊ทธ ์ด๋ฆ์ ์์๋ฅผ ๋ชจ๋ ์ ํํด ๋ฐฐ์ด๋ก ์ ์ฅ
- getElementById(): ํด๋น ์์ด๋์ ์์๋ฅผ ์ ํ โโ์ฃผ์: s์์!! id๋ ํ๋๋๊น!!โโ
- getElementsByClassname(): ํด๋น ํด๋์ค์ ์ํ ์์๋ฅผ ๋ชจ๋ ์ ํํด ๋ฐฐ์ด๋ก ์ ์ฅ
- getElementsByName(): ํด๋น name ์์ฑ๊ฐ์ ๊ฐ์ง๋ ์์๋ฅผ ๋ชจ๋ ์ ํํด ๋ฐฐ์ด๋ก ์ ์ฅ
- querySelectorAll(): ์ ํ์๋ก ์ ํ๋๋ ์์๋ฅผ ๋ชจ๋ ์ ํํด ๋ฐฐ์ด๋ก ์ ์ฅ
(querySelector()):
- ์ผ๋ฐ์ ์ธ ํผ์ ์ ๊ทผํ ๋ ์ฌ์ฉ, document.forms ์ปฌ๋ ์
์ ์ด์ฉํด์ ์ ๊ทผ ๊ฐ๋ฅ
- document: body๋ถ๋ถ -> document.name: body์ name์ ์ฐพ์
ํผ ์ ๊ทผ
<form name = "myform" id = "regform" method="post" action="regist.jsp">
์์ด๋:<input type = "text" name="userid" id="id"><br>
๋น๋ฐ๋ฒํธ: <input type = "password" name="userpw" id= "pw"><br>
</form>
const frm = document.myform;
const frm = document.forms['myform']
const frm = document.getElementById('regform')
const frm = document.forms[0];
ํผ ์์ ์์ด๋ ์
๋ ฅ์์ ์ ๊ทผ
const userid = frm.userid;
const userid = document.forms['myform'].elements[0];
- id๋ก ๋ฐ๋ก ์ฐพ์์ฃผ๊ธฐ
const userid = document.getElementById('id');
const userid = document.forms['myform'].elements['userid'];
const userid = document.forms[0][0]
๐ ์ด๋ฒคํธ ๊ฐ์ฒด(Event Object)
- ํน์ ํ์
์ ์ด๋ฒคํธ์ ๊ด๋ จ์ด ์๋ ๊ฐ์ฒด
- ์ด๋ฒคํธ ๊ฐ์ฒด๋ ํด๋น ํ์
์ ์ด๋ฒคํธ์ ๋ํ ์์ธ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์์
- ๋ชจ๋ ์ด๋ฒคํธ ๊ฐ์ฒด๋ ์ด๋ฒคํธ ํ์
์ ๋ํ๋ด๋ type ํ๋ฌํผํฐ์ ์ด๋ฒคํธ ๋์์ ๋ํ๋ด๋ target ํ๋กํผํฐ๋ฅผ ๊ฐ์ง๊ณ ์์
- ์ด๋ฒคํธ ๊ฐ์ฒด๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ํธ์ถ๋ ๋ ์ธ์๋ก ์ ๋ฌ
function sendit(e){
console.log(e.target);
console.log(e.type);
}
<input type = "button" onclick="sendit()" value="์๋ฃ">
์ด๋ฒคํธ ๋ฑ๋ก
๊ฐ์ฒด.addEventListner(์ด๋ฒคํธ๋ช
, ์คํํ ์ด๋ฒคํธ๋ฆฌ์ค๋, ์ด๋ฒคํธ์ ํ๋ฐฉ์);
- ์ด๋ฒคํธ ํ์
: ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํ ์ด๋ฒคํธ ํ์
- ์คํํ ์ด๋ฒคํธ ๋ฆฌ์ค๋ : ์ง์ ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํํ ์ด๋ฒคํธ ๋ฆฌ์ค๋
- ์ด๋ฒคํธ ์ ํ ๋ฐฉ์ : false๋ฉด ๋ฒ๋ธ๋ง(bubbling) ๋ฐฉ์, true๋ฉด ์บก์ฒ๋ง(capturing) ๋ฐฉ์
- ๋ฒ๋ธ๋ง ๋ฐฉ์:์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์๋ถํฐ ์์ํด์, DOM ํธ๋ฆฌ๋ฅผ ๋ฐ๋ผ ์์ชฝ์ผ๋ก ์ฌ๋ผ๊ฐ๋ฉฐ ์ ํ๋๋ ๋ฐฉ์
Document ๊ฐ์ฒด๋ฟ๋ง ์๋๋ผ ๊ฐ์ฅ ๋ง์ง๋ง์๋ Window ๊ฐ์ฒด๊น์ง ๊ณ์ ์ด์ด์ง
- ์บก์ฒ๋ง ๋ฐฉ์:์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์๊น์ง DOM ํธ๋ฆฌ์ ์ต์์๋ถํฐ ์๋์ชฝ์ผ๋ก ๋ด๋ ค๊ฐ๋ฉด ์ ํ๋๋ ๋ฐฉ์
๋จผ์ Window ๊ฐ์ฒด์ ๋ฆฌ์ค๋๊ฐ ์คํ๋ ํ, Document ๊ฐ์ฒด์ ๋ฑ๋ก๋ ๋ฆฌ์ค๋๊ฐ ์คํ๋๊ณ , ๋๋ค์ ๊ทธ ์์ ์์์ ๋ฑ๋ก๋ ๋ฆฌ์ค๋๊ฐ ์คํ
- ์ด๋ฒคํธ ์ ํ ์ทจ์ ๋ฐฉ๋ฒ:stopPropagation() ๋ฉ์๋๋ cancelBubble ํ๋กํผํฐ๋ฅผ ์ด์ฉ
์ด๋ฒคํธ ์ ๊ฑฐ
๊ฐ์ฒด.removeEventListner(์ด๋ฒคํธํ์
, ์ด๋ฒคํธ๋ฆฌ์ค๋);
๐ณ location ๊ฐ์ฒด
- ํ์ฌ ๋ธ๋ผ์ฐ์ ์ ํ์๋ HTML ๋ฌธ์์ ์ฃผ์๋ฅผ ์ป๊ฑฐ๋, ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌธ์๋ฅผ ๋ถ๋ฌ์ฌ ๋ ์ฌ์ฉ
location ๊ฐ์ฒด์ instance property
- location.href: ํ์ด์ง URL ์ ์ฒด ์ ๋ณด๋ฅผ ๋ฆฌํด ๋๋ URL์ ์ง์ ํ์ฌ ํ์ด์ง๋ฅผ ์ด๋
- location.protocol: ์ฝ๋ก ์ ํฌํจํ๋ https, http, ftp ๋ฑ ํ๋กํ ์ฝ ์ ๋ณด๋ฅผ ๋ฆฌํด
- location.hostname: ํธ์คํธ์ ์ด๋ฆ ๋ฆฌํด
- location.pathname: URL ๊ฒฝ๋ก๋ถ๋ถ์ ์ ๋ณด๋ฅผ ๋ฆฌํด
- location.port: URL์ ํฌํธ๋ฒํธ๋ฅผ ๋ฆฌํด
- location.host: ํธ์คํธ์ ์ด๋ฆ๊ณผ ํฌํธ๋ฒํธ๋ฅผ ๋ฆฌํด
location ๊ฐ์ฒด์ instance method
- location.reload(): ์๋ก๊ณ ์นจ
- location.assign(): ํ์ฌ ์ฐฝ์ ์ง์ ๋ URL ์ฃผ์์ ์กด์ฌํ๋ ๋ฌธ์ ๋ถ๋ฌ์ค๊ธฐ
- location.replace(): ์๋ฌธ์๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ ์ ํ์ฌ ๋ฌธ์๋ฅผ ๋ธ๋ผ์ฐ์ ์ ํ์คํ ๋ฆฌ์์ ์ ๊ฑฐํ๊ณ , ๋ฌธ์ ๋ถ๋ฌ์ค๊ธฐ
โฒ history ๊ฐ์ฒด
- ๋ธ๋ผ์ฐ์ ์ ํ์คํ ๋ฆฌ ์ ๋ณด๋ฅผ ๋ฌธ์์ ๋ฌธ์ ์ํ ๋ชฉ๋ก์ผ๋ก ์ ์ฅํ๋ ๊ฐ์ฒด
- ์ฌ์ฉ์์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ์ด ๊ฐ์ฒด์ ๋๋ถ๋ถ์ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ ํ
history ๊ฐ์ฒด์ instance property
- history.length: ํ์ฌ ๋ธ๋ผ์ฐ์ ์ ํ์คํ ๋ฆฌ ๋ชฉ๋ก์ ๊ฐ์
history ๊ฐ์ฒด์ instance method
- history.back(): ๋ค๋ก ์ด๋
- history.forword(): ์์ผ๋ก ์ด๋
- history.go(0): ์๋ก๊ณ ์นจ
๐ป screen ๊ฐ์ฒด
- ์ฌ์ฉ์์ ๋์คํ๋ ์ด ํ๋ฉด์ ๋ํ ๋ค์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด
screen ๊ฐ์ฒด์ instance property
- screen.width: ํ์ฌ ์ฌ์ฉ์์ ๋์คํ๋ ์ด ํ๋ฉด์ ๋๋น (px)
- screen.height: ํ์ฌ ์ฌ์ฉ์์ ๋์คํ๋ ์ด ํ๋ฉด์ ๋์ด (px)
(๋น๊ต)
window.outerWidth: ํ์ฌ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ๋๋น (px)
window.outerHeight: ํ์ฌ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ๋์ด (px)
- screen.availWidth: ์ด์์ฒด์ ์ ์์
ํ์์ค๊ณผ ๊ฐ์ ๊ณต๊ฐ์ ๋ชจ๋ ์ ์ธํ ํ๋ฉด์ ๋๋น
- screen.availHeight: ์ด์์ฒด์ ์ ์์
ํ์์ค๊ณผ ๊ฐ์ ๊ณต๊ฐ์ ๋ชจ๋ ์ ์ธํ ํ๋ฉด์ ๋์ด
๐งญ navigator ๊ฐ์ฒด
- ๋ธ๋ผ์ฐ์ ๊ณต๊ธ์ ๋ฐ ๋ฒ์ ์ ๋ณด๋ฑ์ ํฌํจํ ๋ธ๋ผ์ฐ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด
navigator ๊ฐ์ฒด์ instance property
- geolocation: GPS ์ ๋ณด๋ฅผ ์์ ํ๋ ํ๋ฌํผํฐ
const success = function(loc){
console.log(loc.coords.latitude);
console.log(loc.coords.longitude);
}
const fail = function(msh){
console.log(msg.code);
}
navigator.geolocation.getCurrentPosition(success, fail);
๐ window ๊ฐ์ฒด
window ๊ฐ์ฒด์ instance method
- window.alter(): ๋ํ์์ -> ํ์ธ ๋ฒํผ์ ๋๋ฌ์ผ ๋ค๋ฅธ ์์
๊ฐ๋ฅ
- window.confirm(): ๋ํ์์ -> ํ์ธ/์ทจ์ ๋ฒํผ์ ๋๋ฌ์ผ ๋ค๋ฅธ ์์
๊ฐ๋ฅ
- window.prompt(): ๋ํ์์๋ก ๋ฉ์์ง ์
๋ ฅ๋ฐ๊ธฐ
-> ์
๋ ฅํ๊ณ ํ์ธ ๋ฒํผ์ ๋๋ฌ์ผ ๋ค๋ฅธ ์์
๊ฐ๋ฅ
- window.setTimeout(ํธ์ถํ ํจ์, ์ง์ฐ์๊ฐ):๋ช
์๋ ์๊ฐ์ด ์ง๋ ๋ค์ ์ง์ ๋ ํจ์๋ฅผ ํธ์ถ
- window.setInterval(ํธ์ถํ ํจ์, ์ง์ฐ์๊ฐ): ์ง์ ๋ ์๊ฐ ๊ฐ๊ฒฉ๋ง๋ค ์ง์ ๋ ํจ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถ
- window.clearTimeout(timeoutID): setTimeout() ๊ณํ๋ ํจ์์ ํธ์ถ ์ทจ์
- window.clearInterval(timeoutID): setInterval() ๋ฐ๋ณต๋๋ ํจ์์ ํธ์ถ ์ทจ์