OBJECT MODEL

μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•΄ λΈŒλΌμš°μ €μ˜ κ°μ²΄ν™”λœ κ΅¬μ„±μš”μ†Œλ“€μ„ μ œμ–΄ν•  수 μžˆλ‹€. 이 객체듀은 μ„œλ‘œ 계측적인 κ΄€κ³„λ‘œ μ΄λ£¨μ–΄μ ΈμžˆμœΌλ©° ν°ν‹€μ—μ„œ BOMκ³Ό DOM으둜 λΆ„λ₯˜ν•  수 μžˆλ‹€.

BOM

BOM(Browser Object Model)은 μ›ΉλΈŒλΌμš°μ €μ˜ μ°½μ΄λ‚˜ ν”„λ ˆμž„μ„ μΆ”μƒν™”ν•˜μ—¬ ν”„λ‘œκ·Έλž˜λ°μ μœΌλ‘œ μ œμ–΄ν•  수 μžˆλ„λ‘ μ œκ³΅ν•΄μ£ΌλŠ” μˆ˜λ‹¨μ΄λ‹€. window 객체의 ν”„λ‘œνΌν‹°μ™€ λ©”μ†Œλ“œλ₯Ό 톡해 μ œμ–΄ν•  수 μžˆλ‹€.

window 객체

window κ°μ²΄λŠ” DOM을 ν¬ν•¨ν•œ λΈŒλΌμš°μ €μ˜ 창을 λ‚˜νƒ€λ‚Έλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  객체, μ „μ—­ ν•¨μˆ˜, μ „μ—­ λ³€μˆ˜λ“€μ€ μžλ™μœΌλ‘œ window객체의 ν”„λ‘œνΌν‹°κ°€ λœλ‹€. window객체의 λ©”μ†Œλ“œλŠ” μ „μ—­ ν•¨μˆ˜μ΄λ©°, window 객체의 ν”„λ‘œνΌν‹°λŠ” μ „μ—­ λ³€μˆ˜κ°€ λœλ‹€. DOM의 μš”μ†Œλ“€λ„ λͺ¨λ‘ window객체의 ν”„λ‘œνΌν‹°κ°€ λœλ‹€. ECMAScript의 global κ°μ²΄λŠ” 호슀트 ν™˜κ²½μ— 따라 이름이 λ‹€λ₯΄κ³ , 역할이 λ‹€λ₯΄λ‹€. μ›ΉλΈŒλΌμš°μ €μ—μ„œ window κ°μ²΄λŠ” ECMAScript의 μ „μ—­κ°μ²΄μ΄λ©΄μ„œ λ™μ‹œμ— μ›ΉλΈŒλΌμš°μ €μ˜ μ°½μ΄λ‚˜ ν”„λ ˆμž„μ„ μ œμ–΄ν•˜λŠ” 역할을 ν•œλ‹€.

Location 객체

Location κ°μ²΄λŠ” λ¬Έμ„œμ˜ μ£Όμ†Œμ™€ κ΄€λ ¨λœ 객체둜 window 객체의 ν”„λ‘œνΌν‹°μ΄λ‹€. URL κ΄€λ ¨ 정보λ₯Ό μ œκ³΅ν•΄μ€€λ‹€.

> location
ancestorOrigins: DOMStringList {length: 0}
assign: Ζ’ assign()
hash: ""
host: "display.cjmall.com"
hostname: "display.cjmall.com"
href: "http://display.cjmall.com/m/homeTab/main?hmtabMenuId=000002&rPIC=Oclock"
origin: "http://display.cjmall.com"
pathname: "/m/homeTab/main"
port: ""
protocol: "http:"
reload: Ζ’ reload()
replace: Ζ’ ()
search: "?hmtabMenuId=000002&rPIC=Oclock"
toString: Ζ’ toString()
valueOf: Ζ’ valueOf()
Symbol(Symbol.toPrimitive): undefined
__proto__: Location

Location 객체 속성

href

μ›Ήμ‚¬μ΄νŠΈ 전체 μ£Όμ†Œ

protocal

ν”„λ‘œν† μ½œ

hostname

호슀트λͺ…

pathname

ν•΄λ‹Ή μ›Ή λ¬Έμ„œ 경둜

hash

ν•΄λ‹Ή μ›Ήλ¬Έμ„œλ‚΄ ν‘œμ‹

ν˜„ μ‚¬μš©ν•˜κ³  μžˆλŠ” μ›ΉλΈŒλΌμš°μ €μ˜ 정보λ₯Ό μ œκ³΅ν•΄μ£ΌλŠ” 객체이닀. 주둜 ν˜Έν™˜μ„± 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λΈŒλΌμš°μ €μ˜ μ’…λ₯˜, 버전을 νŒŒμ•…ν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€.

Navigator
appCodeName: "Mozilla"
appName: "Netscape"
appVersion: "5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
connection: NetworkInformation {onchange: null, effectiveType: "4g", rtt: 50, downlink: 10, saveData: false}
cookieEnabled: true
doNotTrack: null
geolocation: Geolocation {}
hardwareConcurrency: 4
language: "ko-KR"
languages: (4) ["ko-KR", "ko", "en-US", "en"]
maxTouchPoints: 1
mediaCapabilities: MediaCapabilities {}
mediaSession: MediaSession {metadata: null, playbackState: "none"}
mimeTypes: MimeTypeArray {length: 0}
onLine: true
permissions: Permissions {}
platform: "MacIntel"
plugins: PluginArray {length: 0}
product: "Gecko"
productSub: "20030107"
sendBeacon: Ζ’ sendBeacon()
userActivation: UserActivation {hasBeenActive: true, isActive: true}
userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
vendor: "Google Inc."
vendorSub: ""
webkitPersistentStorage: DeprecatedStorageQuota {}
webkitTemporaryStorage: DeprecatedStorageQuota {}
__proto__: Navigator

Navigator 객체 속성

appCodeName

μ›ΉλΈŒλΌμš°μ € μ½”λ“œμ΄λ¦„

appName

μ›ΉλΈŒλΌμš°μ €λͺ… (IE : Microsoft Internet Explorer, νŒŒμ΄μ–΄ν­μŠ€, 크둬 : Nescape)

appVersion

μ›ΉλΈŒλΌμš°μ € 버전

language

μ›ΉλΈŒλΌμš°μ € μ‚¬μš©μ–Έμ–΄

platform

λΈŒλΌμš°μ €κ°€ λ™μž‘ν•˜κ³  μžˆλŠ” μš΄μ˜μ²΄μ œμ— λŒ€ν•œ 정보

userAgent

μ›ΉλΈŒλΌμš°μ €κ°€ μ„œλ²„μ— 접속할 λ•Œ λΈŒλΌμš°μ €μ˜ μ’…λ₯˜, 버전, μ½”λ“œμ΄λ¦„ λ“± μ„œλ²„μ— μ „λ‹¬λ˜λŠ” λͺ¨λ“ μ •보

plugins

ν˜„μž¬ μ‹œμŠ€ν…œμ— μ„€μΉ˜λœ ν”ŒλŸ¬κ·ΈμΈ 정보

mimeTypes

μ›ΉλΈŒλΌμš°μ €μ—μ„œ μ§€μ›ν•˜λŠ” MIME ν˜•μ‹μ— λŒ€ν•œ 정보

DOM

DOM(Document Object Model), λ¬Έμ„œκ°μ²΄λͺ¨λΈμ€ HTMLλ¬Έμ„œλ‚˜ XMLλ¬Έμ„œμ— μ ‘κ·Όν•˜κΈ° μœ„ν•œ μΌμ’…μ˜ μΈν„°νŽ˜μ΄μŠ€μ΄λ‹€. λ¬Έμ„œ λ‚΄μ˜ λͺ¨λ“  μš”μ†Œμ˜ λͺ©μ κ³Ό νŠΉμ§•μ„ μ •μ˜ν•˜κ³ , 각각의 μš”μ†Œμ— μ ‘κ·Όν•˜λŠ” 방법을 μ œκ³΅ν•œλ‹€.

  • DOM은 μ›ΉλΈŒλΌμš°μ €μ˜ 객체 μ§€ν–₯ ν‘œν˜„μ΄λ©°, μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•΄ μˆ˜μ •ν•  수 μžˆλ‹€.

  • DOM은 λΈŒλΌμš°μ € ν™˜κ²½μ— 따라 λ‹€λ₯΄κ²Œ λ™μž‘ν•  수 μžˆλ‹€.

DOM μš”μ†Œ 선택

  • tag name을 μ΄μš©ν•œ 선택

getElementsByTagName : tagname을 μ΄μš©ν•΄ HTMLμš”μ†Œ 선택

var selectedItem = document.getElementsByTagName("li"); //<li> μš”μ†Œ 선택
for(var i=0;i<selectedItem.length;i++){
  selectedItem.item(i).style.color="red";
}

item() λ©”μ†Œλ“œλŠ” ν•΄λ‹Ή HTML 객체 μ§‘ν•©μ—μ„œ 전달받은 μΈλ±μŠ€μ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œλ₯Ό λ°˜ν™˜ν•œλ‹€.

HTML μš”μ†Œμ˜ style propertyλ₯Ό μ΄μš©ν•˜λ©΄, ν•΄λ‹Ή μš”μ†Œμ˜ CSS μŠ€νƒ€μΌμ„ λ³€κ²½ν•  수 μžˆλ‹€.

  • idλ₯Ό μ΄μš©ν•œ 선택

getElementById() : 아이디λ₯Ό μ΄μš©ν•˜μ—¬ HTML μš”μ†Œλ₯Ό 선택

var selectedItem = document.getElementById("even");
selectedItem.styel.color = "red";

μ΄λ•Œ ν•΄λ‹Ή 아이디λ₯Ό κ°€μ§€κ³  μžˆλŠ” μš”μ†Œ μ€‘μ—μ„œ 첫 번째 μš”μ†Œ 단 ν•˜λ‚˜λ§Œμ„ μ„ νƒν•œλ‹€. κ·ΈλŸ¬λ―€λ‘œ μ—¬λŸ¬ μš”μ†Œλ₯Ό μ„ νƒν•˜κ³  싢을 λ•ŒλŠ” tagnameμ΄λ‚˜ class와 같은 λ‹€λ₯Έ 방법을 μ‚¬μš©ν•΄μ•Όν•œλ‹€.

  • Classλ₯Ό μ΄μš©ν•œ 선택

getElementByClassName : 클래슀 이름을 μ΄μš©ν•˜μ—¬ HTML μš”μ†Œ 선택

var selectedItem = document.getElementByClassName("odd");
for(var i=0;i<selectedItem.length;i++){
  selectedItem.item(i).style.color="red";
}
  • CSS selectorλ₯Ό μ΄μš©ν•œ 선택

querySelectorAll() : CSS μ„ νƒμž(아이디, 클래슀, 속성, 속성값 λ“±)λ₯Ό μ΄μš©ν•˜μ—¬ HTMLμš”μ†Œ 선택

var selectedItem = document.querySelectorAll("li.odd");
for(var i=0;i<selectedItem.length;i++){
  selectedItem.item(i).style.color="red";
}
  • HTML 객체 μ§‘ν•©(object collection)을 μ΄μš©ν•œ 선택

var title = document.title; // <title> μš”μ†Œλ₯Ό 선택함.

document.write(title);

DOM μš”μ†Œ λ‚΄μš© λ³€κ²½

DOM을 μ΄μš©ν•˜μ—¬ DOM μš”μ†Œμ˜ λ‚΄μš©(content)λ‚˜ 속성 값을 μ†μ‰½κ²Œ λ³€κ²½ν•  수 μžˆλ‹€.

DOM μš”μ†Œμ˜ λ‚΄μš©μ„ λ°”κΎΈλŠ” κ°€μž₯ μ‰¬μš΄ 방법은 innerHTML property μ΄μš©ν•˜λŠ” 것이닀. λ˜ν•œ, DOM μš”μ†Œμ˜ 속성 이름을 μ΄μš©ν•˜λ©΄ 속성값을 λ°”λ‘œ λ³€κ²½ν•  수 μžˆλ‹€.

var str = document.getElementById("text");
str.innerHTML = "λ¬Έμž₯λ°”κΎΈκΈ°";

HTML μš”μ†Œμ˜ 속성 이름을 μ΄μš©ν•˜μ—¬ 속성값을 λ³€κ²½ν•  수 μžˆλ‹€.

var link = document.getElementById("link");
str.href = "/javascript/intro";
link.innerHTML = "ν•΄λ‹Ή μš”μ†Œμ˜ λ‚΄μš© λ³€κ²½ν•˜κΈ°";

jQuery

jQueryλŠ” DOM을 내뢀에 감좔고 보닀 μ‰½κ²Œ μ›ΉνŽ˜μ΄μ§€λ₯Ό μ‘°μž‘ν•  수 μžˆλ„λ‘ λ•λŠ” 도ꡬ

Last updated

Was this helpful?