ì´ ë¬¸ìë DOMì ëí ê°ë ì ê°ëµíê² ìê°íë 문ìì´ë¤: DOM ì´ ë¬´ìì´ë©°, ê·¸ê²ì´ ì´ë»ê² HTML, XML 문ìë¤ì ìí 구조를 ì ê³µíëì§, ì´ë»ê² DOM ì ì ê·¼íëì§, API ê° ì´ë»ê² ì¬ì©ëëì§ì ëí 참조 ì ë³´ì ìì ë¤ì ì ê³µíë¤.
DOM ì´ë?문ì ê°ì²´ 모ë¸(The Document Object Model, ì´í DOM) ì HTML, XML 문ìì íë¡ê·¸ëë° interface ì´ë¤. DOMì 문ìì 구조íë íí(structured representation)ì ì ê³µíë©° íë¡ê·¸ëë° ì¸ì´ê° DOM 구조ì ì ê·¼í ì ìë ë°©ë²ì ì ê³µíì¬ ê·¸ë¤ì´ 문ì 구조, ì¤íì¼, ë´ì© ë±ì ë³ê²½í ì ìê² ëëë¤. DOM ì nodesì objectsë¡ ë¬¸ì를 íííë¤. ì´ë¤ì ì¹ íì´ì§ë¥¼ ì¤í¬ë¦½í¸ ëë íë¡ê·¸ëë° ì¸ì´ë¤ìì ì¬ì©ë ì ìê² ì°ê²°ìì¼ì£¼ë ìí ì ë´ë¹íë¤.
ì¹ íì´ì§ë ì¼ì¢ ì 문ì(document)ë¤. ì´ ë¬¸ìë ì¹ ë¸ë¼ì°ì 를 íµí´ ê·¸ ë´ì©ì´ í´ìëì´ ì¹ ë¸ë¼ì°ì íë©´ì ëíëê±°ë HTML ìì¤ ìì²´ë¡ ëíë기ë íë¤. ëì¼í 문ì를 ì¬ì©íì¬ ì´ì²ë¼ ë¤ë¥¸ ííë¡ ëíë ì ìë¤ë ì ì 주목í íìê° ìë¤. DOM ì ëì¼í 문ì를 íííê³ , ì ì¥íê³ , ì¡°ìíë ë°©ë²ì ì ê³µíë¤. DOM ì ì¹ íì´ì§ì ê°ì²´ ì§í¥ ííì´ë©°, JavaScriptì ê°ì ì¤í¬ë¦½í ì¸ì´ë¥¼ ì´ì©í´ DOM ì ìì í ì ìë¤.
W3C DOM, WHATWG DOM íì¤ì ëë¶ë¶ì ë¸ë¼ì°ì ìì DOM ì 구ííë 기ì¤ì´ë¤. ë§ì ë¸ë¼ì°ì ë¤ì´ íì¤ ê·ì½ìì ì ê³µíë ê¸°ë¥ ì¸ìë ì¶ê°ì ì¸ ê¸°ë¥ë¤ì ì ê³µí기 ë문ì ì¬ì©ìê° ìì±í 문ìë¤ì´ ê°ê¸° ë¤ë¥¸ DOM ì´ ì ì©ë ë¤ìí ë¸ë¼ì°ì íê²½ìì ëìí ì ìë¤ë ì¬ì¤ì íì ì¸ì§íê³ ìì´ì¼ íë¤.
ì를 ë¤ì´, íì¤ DOM ììë 문ì ììì 모ë <P>
elements ì ëí list 를 리í´íë getElementsByTagName
method 를 ì ìíê³ ìë¤:
var paragraphs = document.getElementsByTagName("P");
// paragraphs[0] is the first <p> element
// paragraphs[1] is the second <p> element, etc.
alert(paragraphs[0].nodeName);
ì¹ íì´ì§ë¥¼ ìì íê±°ë ìì±íëë° ì¬ì©ëë 모ë property, method, event ë¤ì objects ë¡ êµ¬ì±ëë¤. ì를 ë¤ì´ document object ë document ì체를 ì미íë©°, table object ë HTML table ì ì ê·¼í기 ìí HTMLTableElement
DOM ì¸í°íì´ì¤ë¥¼ 구íí ê²ì´ë¤. ì´ ë¬¸ìë Gecko 기ë°ì ë¸ë¼ì°ì ìì 구íë DOM ì ëí object-by-object reference 를 ì ê³µíë¤.
ì´ ë¬¸ìì ëë¶ë¶ì ìì ì ê°ì´, ììì ì¬ì©ë ìì ë JavaScriptì´ë¤. ìì ìì ë JavaScriptë¡ ìì±ëìì§ë§ 문ì(document) ì 문ìì ìì(element) ì ì ê·¼í기 ìí´ DOM ì´ ì¬ì©ëìë¤. DOM ì íë¡ê·¸ëë° ì¸ì´ë ìëì§ë§ DOM ì´ ìë¤ë©´ JavaScript ì¸ì´ë ì¹ íì´ì§ ëë XML íì´ì§ ë° ììë¤ê³¼ ê´ë ¨ë 모ë¸ì´ë ê°ë ë¤ì ëí ì 보를 ê°ì§ 못íê² ëë¤. 문ìì 모ë element - ì ì²´ 문ì, í¤ë, 문ì ìì table, table header, table cell ìì text - ë 문ì를 ìí document object model ì í ë¶ë¶ì´ë¤. ë문ì, ì´ë¬í ììë¤ì DOM ê³¼ JavaScriptì ê°ì ì¤í¬ë¦½í ì¸ì´ë¥¼ íµí´ ì ê·¼íê³ ì¡°ìí ì ìë ê²ì´ë¤.
ì´ì°½ê¸°ìë JavaScriptì DOM ê° ë°ì íê² ì°ê²°ëì´ ììì§ë§, ëì¤ìë ê°ê° ë¶ë¦¬ëì´ ë°ì í´ìë¤. íì´ì§ ì½í ì¸ (the page content)ë DOM ì ì ì¥ëê³ JavaScript를 íµí´ ì ê·¼íê±°ë ì¡°ìí ì ìë¤. ì´ê²ì ë°©ì ìì¼ë¡ íííë©´ ìëì ê°ë¤:
API (web or XML page) = DOM + JS (scripting language)
DOM ì íë¡ê·¸ëë° ì¸ì´ì ë 립ì ì¼ë¡ ëìì¸ëìë¤. ë문ì 문ìì 구조ì ì¸ ííì ë¨ì¼ API 를 íµí´ ì´ì©ê°ë¥íë¤. ì´ ë¬¸ìììë JavaScript를 ì£¼ë¡ ì¬ì©íìì§ë§, DOM ì 구íì ì´ë í ì¸ì´ììë ê°ë¥íë¤. ìëë íì´ì¬ì ì¬ì©í ìì ì´ë¤:
# Python DOM example
import xml.dom.minidom as m
doc = m.parse("C:\\Projects\\Py\\chap1.xml");
doc.nodeName # DOM property of document object;
p_list = doc.getElementsByTagName("para");
ì¹ìì JavaScript ì¬ì©í기ì ê´ë ¨ë 기ì ì ëí ì¶ê°ì ë³´ë JavaScript 기ì ê°ì 문ì를 참조íë¼.
DOM ì ì´ë»ê² ì ê·¼í ì ìëê°?DOM ì ì¬ì©í기 ìí´ í¹ë³í í´ì¼í ì¼ì ìë¤. ê°ê°ì ë¸ë¼ì°ì ë ìì ë§ì ë°©ë²ì¼ë¡ DOM 구ííìì¼ë©°, ì´ë¡ ì¸í´ ì¤ì DOM 기ì¤ì ë°ë¥´ëì§ íì¸í´ì¼ íë ë²ê±°ë¡ìì´ ë°ìíìë¤. (ì´ ë¬¸ì ë ì´ ë¬¸ììì í¼íê³ ì¶ì´íë 주ì ì´ê¸°ë íë¤.) 모ë ì¹ ë¸ë¼ì°ì ë ì¤í¬ë¦½í¸ê° ì ê·¼í ì ìë ì¹ íì´ì§ë¥¼ ë§ë¤ê¸° ìí´ ì´ë ì ëì DOM ì íì ì¬ì©íë¤.
ì¤í¬ë¦½í¸ë¥¼ ìì±í ë(ì¸ë¼ì¸ <script>
ìì를 ì¬ì©íê±°ë ì¹ íì´ì§ ìì ìë ì¤í¬ë¦½í¸ ë¡ë© ëª
ë ¹ì ì¬ì©íì¬), 문ì ì체를 ì¡°ìíê±°ë 문ìì children ì ì»ê¸° ìí´ document
ëë window
elements 를 ìí API 를 ì¦ì ì¬ì©í ì ìë¤. DOM íë¡ê·¸ëë°ì ìëì²ë¼ window
object ë¡ ë¶í° alert()
í¨ì를 ì¬ì©íì¬ alert message 를 íìíë ë§¤ì° ê°ë¨í ê²ì¼ ìë ìê³ ë¤ìë² ìì ì²ë¼ ìë¡ì´ content 를 ìì±íë ë³µì¡í DOM ì´ ë ìë ìë¤.
<body onload="window.alert('welcome to my home page!');"></body>
ìëì JavaScriptë 문ìê° ë¡ëë ë(모ë DOMì ì¬ì©í ì ìê² ëë ëì) ì¤íëë í¨ì를 ì ìíìë¤. ì´ í¨ìë ìë¡ì´ H1 element 를 ìì±íê³ , element ì text 를 ì¶ê°íë©°, H1 ì ì´ ë¬¸ìì í¸ë¦¬ì ì¶ê°íë¤.
<html>
<head>
<script>
// run this function when the document is loaded
window.onload = function () {
// create a couple of elements in an otherwise empty HTML page
var heading = document.createElement("h1");
var heading_text = document.createTextNode("Big Head!");
heading.appendChild(heading_text);
document.body.appendChild(heading);
};
</script>
</head>
<body></body>
</html>
ì¤ìí ë°ì´í° íì
ë¤
ì´ ë¬¸ìë objects ì types ì ìµëí ê°ë¨íê² ì¤ëª
íë ¤ íë¤. API ìë ì°ë¦¬ê° ë°ëì ìê³ ìì´ì¼ í ìë§ì data types ì´ ìë¤ë ì¬ì¤ì ì¼ëí´ ë기 ë°ëë¤. ì´ ë¬¸ìììë nodes ë element
s ë¡, ë
¸ëì arrays ë nodeList
s(ëë element
s), attribute ë
¸ëë¤ì attribute
s ë¡ íííìë¤.
ìëì íë ì´ë¬í data types ì ëí ê°ëµí ì¤ëª ì´ë¤.
document
member ê° document type ì object 를 리í´í ë(ì를 ë¤ì´ elementì ownerDocument
property ë ê·¸ê²ì´ ìí´ ìë document 를 return íë¤. ), ì´ object ë root document object ìì²´ì´ë¤. ë document
object ì ëí ì¤ëª
ì DOM document
Reference ì±í°ë¥¼ 참조íë¼.
element
element
ë DOM API ì member ì ìí´ return ë element ëë element
type ì node 를 ì미íë¤. document.createElement() method ê° node
를 참조íë object 를 리í´íë¤ê³ ë§íë ëì , ì´ method ê° DOM ììì ììëë element
를 리í´íë¤ê³ ì¢ ë ë¨ìíê² ë§í ì ìë¤. element
ê°ì²´ë¤ì DOM Element
interface ì í¨ê» ì¢ ë 기본ì ì¸ Node
interface 를 구íí ê²ì´ê¸° ë문ì ì´ reference ìë ë ê°ì§ê° 모ë í¬í¨ëìë¤ê³ ìê°íë©´ ëë¤.
nodeList
nodeList
ë elements ì ë°°ì´ì´ë¤. (document.getElementsByTagName() method ì ìí´ ë¦¬í´ë ê²ê³¼ ê°ì) nodeListì Items ì index 를 íµí´ ì ê·¼ ê°ë¥íë©°, ë¤ìê³¼ ê°ì´ ë ê°ì§ ë°©ìì´ ìë¤:
item()
methodë nodeList
object ì ë¨ì¼ method ì´ë¤. ëë²ì§¸ ë°©ìì list ìì ëë²ì§¸ item ì fetch íë ì íì ì¸ array syntax ì´ë¤. attribute
attribute ê° member ì ìí´ ë¦¬í´ëë ê²ì(ì를 ë¤ì´ createAttribute()
method í¸ì¶ì ìí 리í´), attribute ì ëí í¹ë³í ì¸í°íì´ì¤ë¥¼ ë
¸ì¶íë object reference ì´ë¤. attributes ë DOM ìì elements ì ê°ì nodes ì´ë¤. elements ë§í¼ ë§ì´ ì¬ì©ëì§ë ìëë¤.
namedNodeMap
namedNodeMap
ë array ì ì ì¬íì§ë§ items ì name ëë index ì ìí´ ì ê·¼ ê°ë¥íë¤. 리ì¤í¸ë í¹ë³í ì ë ¬ì´ ì ì©ëì§ ìì기 enumeration í ë index 를 ì£¼ë¡ ì¬ì©íë¤. namedNodeMap
ë ì´ë¥¼ ìí´ item() method ê° ìì¼ë©°, namedNodeMap
ì item ì ì¶ê°íê±°ë ìì í ì ìë¤.
ì´ ë¬¸ìë objects ì DOM ìì ì¡°ìê°ë¥í ê²ë¤ì ëí´ ì¤ëª
íê³ ìë¤. ì¬ëë¤ì HTML FORM element ê° HTMLFormElement
interface ë¡ë¶í° name
property 를 ì»ê³ , className
property ë HTMLElement
interface ë¡ë¶í° ì»ë ê²ì ëí´ ë³ë¡ ê´ì¬ì ë³´ì´ì§ ìë ê² ê°ë¤. ëê°ì§ ê²½ì° ëª¨ë, property ë form object ìì ìë ê²ì´ë¤.
íì§ë§ DOM ìì 구íë objects ì interfaces ì¬ì´ì ê´ê³ë í¼ëë ì ìë¤. ì´ ì¹ì ììë DOM specification ìì ì¤ì interfaces ì ê·¸ë¤ì ì´ë»ê² íì©í ì ìëì§ì ëí´ ì´í´ë³´ëë¡ íê² ë¤.
Interfaces ì Objectsë§ì objects ê° ì¬ë¬ ê°ì ë¤ë¥¸ interfaces ì ì°ê´ëì´ ìë¤. ì를 ë¤ì´, table object ë createCaption
, insertRow
method ë¤ì´ í¬í¨ë HTMLTableElement
ì 구íí ê²ì´ë¤. table object ë HTML element ì´ê¸°ë í기 ë문ì, table
ì Element
interface(DOM Element
Reference ì±í° 참조)ë 구ííë¤. ë§ì§ë§ì¼ë¡, HTML element ë DOM ì´ ì°ê´ëì´ ìë í nodes í¸ë¦¬(tree)ìì íëì node ì´ë¤. nodes í¸ë¦¬ë ì¹ íì´ì§ ëë XML íì´ì§ë¥¼ ìí object model ì 구ì±íë¤. ë문ì table element ë ë³´ë¤ ê¸°ë³¸ì ì¸ Element
ìì íìë Node
interface 를 구ííê³ ìë¤.
ìëì ìì ì²ë¼, table
object 를 참조íê² ëë©´, 기본ì ì¼ë¡ ì´ë¤ 3 ê°ì§ interfaces 를 ì¬ì©í ì ìê² ëë¤.
var table = document.getElementById("table");
var tableAttrs = table.attributes; // Node/Element interface
for (var i = 0; i < tableAttrs.length; i++) {
// HTMLTableElement interface: border attribute
if (tableAttrs[i].nodeName.toLowerCase() == "border") table.border = "1";
}
// HTMLTableElement interface: summary attribute
table.summary = "note: increased border";
DOM ì íµì¬ Interfaces
ì´ ì¹ì ì DOM ìì ê°ì¥ ë§ì´ ì¬ì©ëë interfaces 를 ì 리í´ë³´ìë¤. ì¬ê¸°ììë ì´ë¤ API ê° ì¤ì ë¡ ì´ë¤ ì¼ì íëì§ ì¤ëª íë ëì DOM ì ì¬ì©íë©´ì ì주 ë§ëê² ëë methods ì properties 를 ë³´ì¬ì¤ ê²ì´ë¤. ì´ë¤ API ë ì´ ì± ì ë§ì§ë§ì ìê°ë DOM ìì ììë ì¬ì©ëìë¤.
Document
ì window
objects ë DOM íë¡ê·¸ëë°ìì ê°ì¥ ì주 ì¬ì©íë objects ì´ë¤. ê°ë¨íê² ì¤ëª
íìë©´, window
object ë ë¸ë¼ì°ì ì ê°ë¤ê³ í ì ìì¼ë©°, document
object ë root document ìì²´ë¼ê³ í ì ìë¤. generic Node
interface ë¡ë¶í° ììë°ì Element
ì Node
, Element
interfaces ê° íë ¥íì¬ ê°ê°ì elements ìì ì¬ì©í ì ìë ìë§ì methods ì properties 를 ì ê³µíë¤. ì´ë¬í elements ë ì´ì ì¹ì
ìì ì¤ëª
í table
object ìì ììë ì´í´ë´¤ë¯ì´, elements ê° ë³´ì í ë°ì´í°ë¥¼ ì²ë¦¬í ì ìë í¹ì í interfaces ë ê°ì§ê³ ìë¤.
ìëë ì¹ íì´ì§, XML íì´ì§ ì¤í¬ë¦½í ìì DOM ì ì¬ì©íë ê³µíµì ì¸ API ë¤ì ê°ëµí 목ë¡ì´ë¤.
document.getElementById(id)
document.getElementsByTagName(name)
document.createElement(name)
parentNode.appendChild(node)
element.innerHTML
element.style.left
element.setAttribute
element.getAttribute
element.addEventListener
window.content
window.onload
window.dump
window.scrollTo
ì´ ë¬¸ìë ì¬ì©ìê° ì¹ ê°ë°ì ì¬ì©í ì ìë 모ë interface ì ëí ìì 를 ì ê³µíë¤. ìì ë <script>
element ììì DOM ì ì ê·¼íë ìë²½í HTML íì´ì§ ííì¸ ê²ë ìê³ , form ìì script 를 ì¤íí기 ìí´ ë²í¼ê³¼ ê°ì interface ê° íìí ê²½ì°ë ìì¼ë©°, DOM ì´ ëª©ë¡íëì´ ìíëë HTML elements ë ìì ê²ì´ë¤. ì¬ì©ìë¤ì ì´ë¬í ìì 를 ìë¡ì´ HTML 문ìì ë³µì¬íì¬ ë¸ë¼ì°ì ìì ì¤íí ì ìë¤.
ì´ë¤ ìì ë ë§¤ì° ê°ë¨í ìë ìë¤. HTML elements ì ëí interfaceì 기본ì ì¸ ê´ê³ë§ ë³´ì¬ì£¼ë ì´ë¬í ìì 를 ì¤íí ëë, ì¤í¬ë¦½í¸ìì ì½ê² ì ê·¼í ì ìë test page 를 ì¤ì í ìë ìë¤. ìëì ìì ë interface를 í
ì¤í¸ í ì ìë í¨ìê° ìì¹í ì ìë header ìì <script>
element ì ê³µíë¤. ì´ í¨ìë retrieve, set, ì¡°ìí ì ìë attributes ê° í¬í¨ë HTML elements ê° ì¬ì©ëìì¼ë©°, ë¸ë¼ì°ì ìì ì´ë¤ í¨ì를 í¸ì¶í기 ìí´ ì¹ UI 를 ì ê³µíë¤.
ì¬ì©ìë ìì ì´ ê´ì¬ìì´ íë DOM interfaces 를 í
ì¤í¸ í기 ìí´, ì´ test page 를 ì¬ì©íê±°ë ì´ì ë¹ì·í ê²ì ë§ë¤ì´ ë¸ë¼ì°ì ìì ì´ë»ê² ëìíëì§ íì¸í ì ìë¤. ì¬ì©ìë test()
í¨ì ë´ì©ì íìì ë°ë¼ ì
ë°ì´í¸í ì ìë¤. (ë²í¼ ì¶ê°, elements ì¶ê° ë±)
<html>
<head>
<title>DOM Tests</title>
<script type="application/javascript">
function setBodyAttr(attr, value) {
if (document.body) eval("document.body." + attr + '="' + value + '"');
else notSupported();
}
</script>
</head>
<body>
<div style="margin: .5in; height: 400;">
<p>
<b><tt>text</tt>color</b>
</p>
<form>
<select
onChange="setBodyAttr('text',
this.options[this.selectedIndex].value);">
<option value="black">black</option>
<option value="darkblue">darkblue</option>
</select>
<p>
<b><tt>bgColor</tt></b>
</p>
<select
onChange="setBodyAttr('bgColor',
this.options[this.selectedIndex].value);">
<option value="white">white</option>
<option value="lightgrey">gray</option>
</select>
<p>
<b><tt>link</tt></b>
</p>
<select
onChange="setBodyAttr('link',
this.options[this.selectedIndex].value);">
<option value="blue">blue</option>
<option value="green">green</option>
</select>
<small>
<a href="http://www.brownhen.com/dom_api_top.html" id="sample">
(sample link)</a
></small
><br />
</form>
<form>
<input type="button" value="version" onclick="ver()" />
</form>
</div>
</body>
</html>
ë¨ì¼ íì´ì§(ì를 ë¤ì´, ì¹ íì´ì§ì ììì ìí¥ì 주ë property ì¤ì íë) ìì ìë§ì interfaces 를 í ì¤í¸í기 ìí´ ì¤ì ë²í¼, textfield, ëë ë¤ë¥¸ HTML elements를 ì¬ì©íì¬ ì ì¬í í ì¤í¸ íì´ì§ë¥¼ ë§ë¤ ì ìë¤. ìëì ì¤í¬ë¦°ì·ì í ì¤í¸ë¥¼ ìí´ ì´ë»ê² interfaces를 그룹ííëì§ì ëí ìì´ëì´ë¥¼ ì ê³µíê³ ìë¤.
ì´ ìì ìì ëë¡ë¤ì´ ë©ë´ë ì¹ íì´ì§ìì DOM ì ê·¼ê°ë¥í ë°°ê²½ìì(bgColor
), íì´í¼ë§í¬ ìì(aLink
), í
ì¤í¸ ìì(text
)ì ëì ì¼ë¡ ì
ë°ì´í¸íë¤. ì´ë»ê² ìì ì test pages 를 ëìì¸íëë¼ë, interface í
ì¤í¸ë DOM ì í¨ê³¼ì ì¼ë¡ ì¬ì©íë ë²ì ë°°ì°ë ë° ë§¤ì° ì¤ìí ìë¨ìì ëª
ì¬íë¼.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4