ÐÑÐ¾Ñ Ñаздел пÑедÑÑавлÑÐµÑ ÐºÑаÑкое знакомÑÑво Ñ ÐбÑекÑной ÐоделÑÑ ÐокÑменÑа (DOM) - ÑÑо Ñакое DOM, каким обÑазом пÑедоÑÑавлÑÑÑÑÑ ÑÑÑÑкÑÑÑÑ HTML и XML докÑменÑов, и как взаимодейÑÑвоваÑÑ Ñ Ð½Ð¸Ð¼Ð¸. ÐаннÑй Ñаздел ÑодеÑÐ¶Ð¸Ñ ÑпÑавоÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¸ пÑимеÑÑ.
ЧÑо Ñакое ÐбÑекÑÐ½Ð°Ñ ÐÐ¾Ð´ÐµÐ»Ñ ÐокÑменÑа (DOM)?ÐбÑекÑÐ½Ð°Ñ ÐÐ¾Ð´ÐµÐ»Ñ ÐокÑменÑа (DOM) â ÑÑо пÑогÑаммнÑй инÑеÑÑÐµÐ¹Ñ (API) Ð´Ð»Ñ HTML и XML докÑменÑов. DOM пÑедоÑÑавлÑÐµÑ ÑÑÑÑкÑÑÑиÑованное пÑедÑÑавление докÑменÑа и опÑеделÑÐµÑ Ñо, как ÑÑа ÑÑÑÑкÑÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾ÑÑÑпна из пÑогÑамм, коÑоÑÑе могÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ ÑодеÑжимое, ÑÑÐ¸Ð»Ñ Ð¸ ÑÑÑÑкÑÑÑÑ Ð´Ð¾ÐºÑменÑа. ÐÑедÑÑавление DOM ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· ÑÑÑÑкÑÑÑиÑованной гÑÑÐ¿Ð¿Ñ Ñзлов и обÑекÑов, коÑоÑÑе имеÑÑ ÑвойÑÑва и меÑодÑ. Ðо ÑÑÑеÑÑвÑ, DOM ÑоединÑÐµÑ Ð²ÐµÐ±-ÑÑÑаниÑÑ Ñ ÑзÑками опиÑÐ°Ð½Ð¸Ñ ÑÑенаÑиев либо ÑзÑками пÑогÑаммиÑованиÑ.
Ðеб-ÑÑÑаниÑа â ÑÑо докÑменÑ. ÐокÑÐ¼ÐµÐ½Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑедÑÑавлен как в окне бÑаÑзеÑа, Ñак и в Ñамом HTML-коде. РлÑбом ÑлÑÑае, ÑÑо один и ÑÐ¾Ñ Ð¶Ðµ докÑменÑ. DOM пÑедоÑÑавлÑÐµÑ Ð´ÑÑгой ÑпоÑоб пÑедÑÑавлениÑ, Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¸ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑого докÑменÑа. DOM полноÑÑÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¾Ð±ÑекÑно-оÑиенÑиÑованное пÑедÑÑавление веб-ÑÑÑаниÑÑ, Ð´ÐµÐ»Ð°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñм ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ пÑи помоÑи ÑзÑка опиÑÐ°Ð½Ð¸Ñ ÑÑенаÑиев наподобие JavaScript.
СÑандаÑÑÑ W3C DOM и WHATWG DOM ÑоÑмиÑÑÑÑ Ð¾ÑÐ½Ð¾Ð²Ñ DOM, ÑеализованнÑе в болÑÑинÑÑве ÑовÑеменнÑÑ Ð±ÑаÑзеÑов. Ðногие бÑаÑзеÑÑ Ð¿ÑедлагаÑÑ ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð·Ð° пÑеделами данного ÑÑандаÑÑа, поÑÑÐ¾Ð¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ пÑовеÑÑÑÑ ÑабоÑоÑпоÑобноÑÑÑ ÑÐµÑ Ð¸Ð»Ð¸ инÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑей DOM Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ конкÑеÑного бÑаÑзеÑа.
ÐапÑимеÑ: ÑÑандаÑÑ DOM опиÑÑваеÑ, ÑÑо меÑод getElementsByTagName
в коде, Ñказанном ниже, должен возвÑаÑаÑÑ ÑпиÑок вÑеÑ
ÑлеменÑов <p> в докÑменÑе.
paragraphs = document.getElementsByTagName("P");
// paragraphs[0] ÑÑо пеÑвÑй <p> ÑлеменÑ
// paragraphs[1] ÑÑо вÑоÑой <p> ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸ Ñ.д.
alert(paragraphs[0].nodeName);
ÐÑе ÑвойÑÑва, меÑÐ¾Ð´Ñ Ð¸ ÑобÑÑиÑ, доÑÑÑпнÑе Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²ÑÑ
ÑÑÑаниÑ, оÑÐ³Ð°Ð½Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ Ð² виде обÑекÑов. ÐапÑимеÑ, обÑÐµÐºÑ document
, коÑоÑÑй пÑедÑÑавлÑÐµÑ Ñам докÑменÑ, обÑÐµÐºÑ table
, коÑоÑÑй ÑеализÑÐµÑ ÑпеÑиалÑнÑй инÑеÑÑÐµÐ¹Ñ DOM HTMLTableElement
, необÑ
одимÑй Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к HTML-ÑаблиÑам, и Ñак далее. ÐÐ°Ð½Ð½Ð°Ñ Ð´Ð¾ÐºÑменÑаÑÐ¸Ñ Ð´Ð°ÑÑ ÑпÑÐ°Ð²ÐºÑ Ð¾Ð± обÑекÑаÑ
DOM, ÑеализованнÑÑ
Gecko-подобнÑÑ
бÑаÑзеÑаÑ
.
ÐеболÑÑой пÑÐ¸Ð¼ÐµÑ Ð²ÑÑе, как поÑÑи вÑе пÑимеÑÑ Ð² ÑÑой ÑпÑавке â ÑÑо JavaScript. То еÑÑÑ Ð¿ÑÐ¸Ð¼ÐµÑ Ð½Ð°Ð¿Ð¸Ñан на JavaScript, но пÑи ÑÑом иÑполÑзÑеÑÑÑ DOM Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к докÑменÑÑ Ð¸ его ÑлеменÑам. DOM не ÑвлÑеÑÑÑ ÑзÑком пÑогÑаммиÑованиÑ, но без него JavaScript не имел Ð±Ñ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ модели или пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ веб-ÑÑÑаниÑе, HTML-докÑменÑе, XML-докÑменÑе и Ð¸Ñ ÑлеменÑÐ°Ñ . ÐаждÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² докÑменÑе - веÑÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ Ð² Ñелом, заголовок, ÑаблиÑÑ Ð²Ð½ÑÑÑи докÑменÑа, заголовки ÑаблиÑÑ, ÑекÑÑ Ð²Ð½ÑÑÑи ÑÑеек ÑаблиÑÑ - ÑÑо ÑаÑÑи обÑекÑной докÑменÑной модели Ð´Ð»Ñ ÑÑого докÑменÑа, поÑÑÐ¾Ð¼Ñ Ð²Ñе они могÑÑ Ð±ÑÑÑ Ð´Ð¾ÑÑÑÐ¿Ð½Ñ Ð¸ могÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ DOM и ÑкÑипÑового ÑзÑка наподобие JavaScript.
ÐнаÑале JavaScript и DOM бÑли ÑеÑно ÑвÑзанÑ, но впоÑледÑÑвии они ÑазвилиÑÑ Ð² ÑазлиÑнÑе ÑÑÑноÑÑи. СодеÑжимое ÑÑÑаниÑÑ Ñ ÑаниÑÑÑ Ð² DOM и Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾ÑÑÑпно и изменÑÑÑÑÑ Ñ Ð¸ÑполÑзованием JavaScript, поÑÑÐ¾Ð¼Ñ Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ запиÑаÑÑ ÑÑо в виде пÑиблизиÑелÑного ÑавенÑÑва:
API (веб либо XML ÑÑÑаниÑа) = DOM + JS (ÑзÑк опиÑÐ°Ð½Ð¸Ñ ÑкÑипÑов)
DOM ÑпÑоекÑиÑован Ñаким обÑазом, ÑÑÐ¾Ð±Ñ Ð±ÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑм Ð¾Ñ Ð»Ñбого конкÑеÑного ÑзÑка пÑогÑаммиÑованиÑ, обеÑпеÑÐ¸Ð²Ð°Ñ ÑÑÑÑкÑÑÑное пÑедÑÑавление докÑменÑа ÑоглаÑно ÐµÐ´Ð¸Ð½Ð¾Ð¼Ñ Ð¸ поÑледоваÑелÑÐ½Ð¾Ð¼Ñ API. ХоÑÑ Ð¼Ñ Ð²ÑеÑело ÑÑокÑÑиÑÐ¾Ð²Ð°Ð½Ñ Ð½Ð° JavaScript в ÑÑой ÑпÑавоÑной докÑменÑаÑии, ÑеализаÑÐ¸Ñ DOM Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾ÑÑÑоена Ð´Ð»Ñ Ð»Ñбого ÑзÑка, как в ÑледÑÑÑем пÑимеÑе на Python:
# ÐÑÐ¸Ð¼ÐµÑ DOM на ÑзÑке Python
import xml.dom.minidom as m
doc = m.parse("C:\\Projects\\Py\\chap1.xml");
doc.nodeName # СвойÑÑво обÑекÑа докÑменÑа DOM;
p_list = doc.getElementsByTagName("para");
ÐÐ»Ñ Ð¿Ð¾Ð´Ñобной инÑоÑмаÑии о Ñом, какие ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¸ ÑÑаÑÑвÑÑÑ Ð² напиÑании JavaScript Ð´Ð»Ñ Ð²ÐµÐ±, ÑмоÑÑиÑе обзоÑнÑÑ ÑÑаÑÑÑ JavaScript technologies overview.
Ðаким обÑазом доÑÑÑпен DOM?ÐÑ Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð´ÐµÐ»Ð°ÑÑ Ð½Ð¸Ñего оÑобенного Ð´Ð»Ñ ÑабоÑÑ Ñ DOM. РазлиÑнÑе бÑаÑзеÑÑ Ð¸Ð¼ÐµÑÑ ÑазлиÑнÑÑ ÑеализаÑÐ¸Ñ DOM, ÑÑи ÑеализаÑии показÑваÑÑ ÑазлиÑнÑÑ ÑÑÐµÐ¿ÐµÐ½Ñ ÑооÑвеÑÑÑÐ²Ð¸Ñ Ñ Ð´ÐµÐ¹ÑÑвиÑелÑнÑм ÑÑандаÑÑом DOM (ÑÑо Ñема, коÑоÑÑÑ Ð¼Ñ Ð¿ÑÑалиÑÑ Ð½Ðµ заÑÑагиваÑÑ Ð² данной докÑменÑаÑии), но каждÑй бÑаÑÐ·ÐµÑ Ð¸ÑполÑзÑÐµÑ Ñвой DOM, ÑÑÐ¾Ð±Ñ ÑделаÑÑ Ð²ÐµÐ± ÑÑÑаниÑÑ Ð´Ð¾ÑÑÑпнÑми Ð´Ð»Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ñ ÑзÑками ÑÑенаÑиев.
ÐÑи Ñоздании ÑÑенаÑÐ¸Ñ Ñ Ð¸ÑполÑзованием ÑлеменÑа <script>
, либо вклÑÑÐ°Ñ Ð² веб ÑÑÑаниÑÑ Ð¸Ð½ÑÑÑÑкÑÐ¸Ñ Ð´Ð»Ñ Ð·Ð°Ð³ÑÑзки ÑкÑипÑа, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе немедленно пÑиÑÑÑпиÑÑ Ðº иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑогÑаммного инÑеÑÑейÑа (API), иÑполÑзÑÑ ÑлеменÑÑ document
или window
Ð´Ð»Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ñ Ñамим докÑменÑом, либо Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ñомков ÑÑого докÑменÑа, Ñ.е. ÑазлиÑнÑÑ
ÑлеменÑов на ÑÑÑаниÑе. ÐаÑе пÑогÑаммиÑование DOM Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñем-Ñо пÑоÑÑÑм, напÑимеÑ, вÑвод ÑообÑÐµÐ½Ð¸Ñ Ñ Ð¸ÑполÑзованием ÑÑнкÑии alert()
обÑекÑа window
, или иÑполÑзоваÑÑ Ð±Ð¾Ð»ÐµÐµ ÑложнÑе меÑÐ¾Ð´Ñ DOM, коÑоÑÑе ÑоздаÑÑ Ð½Ð¾Ð²Ð¾Ðµ ÑодеÑжимое, как показано в ÑледÑÑÑем пÑимеÑе:
<body
onload="window.alert('добÑо пожаловаÑÑ Ð½Ð° Ð¼Ð¾Ñ Ð´Ð¾Ð¼Ð°ÑнÑÑ ÑÑÑаниÑÑ!');"></body>
Ð ÑледÑÑÑем пÑимеÑе внÑÑÑи ÑлеменÑа <script>
опÑеделÑн код JavaScript, даннÑй код ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑÑнкÑÐ¸Ñ Ð¿Ñи загÑÑзке докÑменÑа (когда веÑÑ DOM доÑÑÑпен Ð´Ð»Ñ Ð¸ÑполÑзованиÑ). ÐÑа ÑÑнкÑÐ¸Ñ ÑоздаÑÑ Ð½Ð¾Ð²Ñй ÑÐ»ÐµÐ¼ÐµÐ½Ñ H1, добавлÑÐµÑ ÑекÑÑ Ð² даннÑй ÑлеменÑ, а заÑем добавлÑÐµÑ H1 в деÑево докÑменÑа:
<html>
<head>
<script>
// запÑÑк данной ÑÑнкÑии пÑи загÑÑзке докÑменÑа
window.onload = function () {
// Ñоздание неÑколÑкиÑ
ÑлеменÑов
// в пÑÑÑой HTML ÑÑÑаниÑе
heading = document.createElement("h1");
heading_text = document.createTextNode("Big Head!");
heading.appendChild(heading_text);
document.body.appendChild(heading);
};
</script>
</head>
<body></body>
</html>
ÐажнÑе ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
ÐаннÑй Ñаздел пÑедназнаÑен Ð´Ð»Ñ ÐºÑаÑкого опиÑÐ°Ð½Ð¸Ñ ÑазлиÑнÑÑ
Ñипов и обÑекÑов в пÑоÑÑой и доÑÑÑпной манеÑе. СÑÑеÑÑвÑÐµÑ Ð½ÐµÐºÐ¾ÑоÑое колиÑеÑÑво ÑазлиÑнÑÑ
Ñипов даннÑÑ
, коÑоÑÑе иÑполÑзÑÑÑÑÑ Ð² API, на коÑоÑÑе Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¾Ð±ÑаÑиÑÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ. ÐÐ»Ñ Ð¿ÑоÑÑоÑÑ, ÑинÑакÑÐ¸Ñ Ð¿ÑимеÑов в данном Ñазделе обÑÑно ÑÑÑлаеÑÑÑ Ð½Ð° ÑÐ·Ð»Ñ ÐºÐ°Ðº на element
s, на маÑÑÐ¸Ð²Ñ Ñзлов как на nodeList
s ( либо пÑоÑÑо element
s ) и на аÑÑибÑÑÑ Ñзла, пÑоÑÑо как на attribute
s.
Ðиже ÑаблиÑа Ñ ÐºÑаÑким опиÑанием ÑÑÐ¸Ñ Ñипов даннÑÑ .
document Ðогда Ñлен возвÑаÑÐ°ÐµÑ Ð¾Ð±ÑÐµÐºÑ Ñипа document (напÑимеÑ, ÑвойÑÑво ÑлеменÑа ownerDocument возвÑаÑÐ°ÐµÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ Ðº коÑоÑÐ¾Ð¼Ñ Ð¾Ð½ оÑноÑиÑÑÑ), ÑÑÐ¾Ñ Ð¾Ð±ÑÐµÐºÑ document ÑвлÑеÑÑÑ ÑобÑÑвеннÑм коÑневÑм обÑекÑом. Ð DOM document Reference Ñазделе опиÑан обÑÐµÐºÑ document.ÐаÑÑив ÑлеменÑов, как ÑоÑ, ÑÑо возвÑаÑаеÑÑÑ Ð¼ÐµÑодом Document.getElementsByTagName(). ÐонкÑеÑнÑе ÑлеменÑÑ Ð² маÑÑиве доÑÑÑÐ¿Ð½Ñ Ð¿Ð¾ индекÑÑ Ð´Ð²ÑÐ¼Ñ ÑпоÑобами:
ÐÑи ÑпоÑÐ¾Ð±Ñ ÑквиваленÑнÑ. РпеÑвом ÑпоÑобе item() - единÑÑвеннÑй меÑод обÑекÑа NodeList. ÐоÑледний иÑполÑзÑÐµÑ Ð¾Ð±ÑÑнÑй ÑинÑакÑÐ¸Ñ Ð¼Ð°ÑÑивов, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð²ÑоÑое знаÑение в ÑпиÑке.
attribute Ðогда attribute возвÑаÑаеÑÑÑ Ñленом API (напÑимеÑ, меÑод createAttribute()) - ÑÑо бÑÐ´ÐµÑ ÑÑÑлка на обÑекÑ, коÑоÑÑй пÑедоÑÑавлÑÐµÑ ÑпеÑиалÑнÑй (Ñ Ð¾ÑÑ Ð¸ неболÑÑой) инÑеÑÑÐµÐ¹Ñ Ð´Ð»Ñ Ð°ÑÑибÑÑов. ÐÑÑибÑÑÑ - ÑÑо ÑÐ·Ð»Ñ Ð² DOM, как и ÑлеменÑÑ, Ñ Ð¾ÑÑ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе Ñедко иÑполÑзоваÑÑ Ð¸Ñ Ð² Ñаком виде. namedNodeMap namedNodeMap подобна маÑÑивÑ, но ÑлеменÑÑ Ð´Ð¾ÑÑÑÐ¿Ð½Ñ Ð¿Ð¾ имени или индекÑÑ. ÐоÑÑÑп по индекÑÑ - ÑÑо лиÑÑ Ð´Ð»Ñ ÑдобÑÑва пеÑеÑиÑлениÑ, Ñ.к. ÑлеменÑÑ Ð½Ðµ имеÑÑ Ð¾Ð¿ÑеделÑнного поÑÑдка в ÑпиÑке. ÐÑÐ¾Ñ Ñип даннÑÑ Ð¸Ð¼ÐµÐµÑ Ð¼ÐµÑод item() Ð´Ð»Ñ ÑÑÐ¸Ñ Ñелей и Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе Ñакже добавлÑÑÑ Ð¸ ÑдалÑÑÑ ÑлеменÑÑ Ð¸Ð· namedNodeMap DOM-инÑеÑÑейÑÑ (DOM interfaces)ÐÑо ÑÑководÑÑво об обÑекÑаÑ
и ÑеалÑнÑÑ
веÑаÑ
, коÑоÑÑе Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ DOM-иеÑаÑÑ
ией. ÐÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾ моменÑов, где понимание Ñого, как ÑÑо ÑабоÑаеÑ, Ð¼Ð¾Ð¶ÐµÑ ÑдивлÑÑÑ. ÐапÑимеÑ, обÑекÑ, пÑедÑÑавлÑÑÑий HTML form
ÑлеменÑ, беÑÑÑ ÑÐ²Ð¾Ñ ÑвойÑÑво name
из инÑеÑÑейÑа HTMLFormElement
, а ÑвойÑÑво className
- из инÑеÑÑейÑа HTMLElement
. РобоиÑ
ÑлÑÑаÑÑ
ÑвойÑÑво, коÑоÑое Ð²Ñ Ñ
оÑиÑе, наÑ
одиÑÑÑ Ð² ÑÑом обÑекÑе ÑоÑмÑ.
ÐÑоме Ñого, оÑноÑение Ð¼ÐµÐ¶Ð´Ñ Ð¾Ð±ÑекÑами и инÑеÑÑейÑами, коÑоÑÑе они ÑеализÑÑÑ Ð² DOM Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑдивиÑелÑнÑм и ÑÑÐ¾Ñ Ñаздел пÑÑаеÑÑÑ ÑаÑÑказаÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ о ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð¸Ð½ÑеÑÑейÑÐ°Ñ Ð² DOM и о Ñом, как они могÑÑ Ð±ÑÑÑ Ð´Ð¾ÑÑÑпнÑ.
ÐнÑеÑÑейÑÑ Ð¸ обÑекÑÑ (Interfaces and objects)Ðногие обÑекÑÑ ÑеализÑÑÑ Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ð¸Ð· неÑколÑкиÑ
инÑеÑÑейÑов. ÐбÑÐµÐºÑ ÑаблиÑÑ, напÑимеÑ, ÑеализÑÐµÑ ÑпеÑиалÑнÑй HTML Table Element Interface, коÑоÑÑй вклÑÑÐ°ÐµÑ Ñакие меÑÐ¾Ð´Ñ ÐºÐ°Ðº createCaption
и insertRow
. Ðо Ñак как ÑÑо ÑаблиÑа - ÑÑо еÑÑ Ð¸ HTML-ÑлеменÑ, table
ÑеализÑÐµÑ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ Element
, опиÑаннÑй в Ñазделе DOM element
Reference. ÐаконеÑ, Ñак как HTML-ÑÐ»ÐµÐ¼ÐµÐ½Ñ (в ÑмÑÑле DOM) - ÑÑо Ñзел (node)
в деÑеве, коÑоÑое ÑоÑÑавлÑÐµÑ Ð¾Ð±ÑекÑнÑÑ Ð¼Ð¾Ð´ÐµÐ»Ñ Ð´Ð»Ñ HTML- или XML-ÑÑÑаниÑÑ, ÑаблиÑнÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñакже ÑеализÑÐµÑ Ð±Ð¾Ð»ÐµÐµ обÑий инÑеÑÑÐµÐ¹Ñ Node
, из коÑоÑого пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Element
.
Ðогда Ð²Ñ Ð¿Ð¾Ð»ÑÑаеÑе ÑÑÑÐ»ÐºÑ Ð½Ð° обÑÐµÐºÑ table
, как в ÑледÑÑÑем пÑимеÑе, Ð²Ñ Ð¾Ð±ÑÑно иÑполÑзÑеÑе вÑе ÑÑи инÑеÑÑейÑа ÑÑого обÑекÑа, веÑоÑÑно, даже не Ð·Ð½Ð°Ñ ÑÑого.
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 (Core interfaces in the DOM)
ÐÑÐ¾Ñ Ñаздел пеÑеÑиÑлÑÐµÑ Ð½ÐµÑколÑко ÑамÑÑ ÑаÑпÑоÑÑÑанÑннÑÑ Ð¸Ð½ÑеÑÑейÑов в DOM. ÐÐ´ÐµÑ Ð½Ðµ в Ñом ÑÑÐ¾Ð±Ñ Ð¾Ð¿Ð¸ÑаÑÑ, ÑÑо делаÑÑ ÑÑи меÑÐ¾Ð´Ñ API, но в Ñом ÑÑÐ¾Ð±Ñ Ð´Ð°ÑÑ Ð²Ð°Ð¼ неÑколÑко мÑÑлей наÑÑÑÑ Ð²Ð¸Ð´Ð¾Ð² меÑодов и ÑвойÑÑв, коÑоÑÑе Ð²Ñ Ð±ÑдеÑе ÑаÑÑо видеÑÑ, иÑполÑзÑÑ DOM. ÐÑи ÑаÑпÑоÑÑÑанÑннÑе ÑаÑÑи API иÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð² болÑÑинÑÑве пÑимеÑов Ñаздела DOM Examples в конÑе ÑÑой ÑпÑавки.
Document, window
- ÑÑо обÑекÑÑ, ÑÑи инÑеÑÑейÑÑ Ð²Ñ, как пÑавило, оÑÐµÐ½Ñ ÑаÑÑо иÑполÑзÑеÑе в пÑогÑаммиÑовании DOM. ÐовоÑÑ Ð¿ÑоÑÑÑми Ñловами, обÑÐµÐºÑ window
пÑедÑÑавлÑÐµÑ ÑÑо-Ñо вÑоде бÑаÑзеÑа, а обÑÐµÐºÑ document
- коÑÐµÐ½Ñ Ñамого докÑменÑа. Element
наÑледÑеÑÑÑ Ð¾Ñ Ð¾Ð±Ñего инÑеÑÑейÑа Node
, и ÑÑи инÑеÑÑейÑÑ Ð²Ð¼ÐµÑÑе пÑедоÑÑавлÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾ меÑодов и ÑвойÑÑв, коÑоÑÑе можно пÑименÑÑÑ Ñ Ð¾ÑделÑнÑÑ
ÑлеменÑов. ÐÑи ÑлеменÑÑ Ñакже могÑÑ Ð¸Ð¼ÐµÑÑ Ð¾ÑделÑнÑе инÑеÑÑейÑÑ Ð´Ð»Ñ ÑабоÑÑ Ñ Ñипами даннÑÑ
, коÑоÑÑе ÑÑи ÑлеменÑÑ ÑодеÑжаÑ, как в пÑимеÑе Ñ Ð¾Ð±ÑекÑом table
в пÑедÑдÑÑем ÑлÑÑае.
Ðиже пÑедÑÑавлен кÑаÑкий ÑпиÑок ÑаÑпÑоÑÑÑанÑннÑÑ Ñленов API, иÑполÑзÑемÑÑ Ð² пÑогÑаммиÑовании веб- и XML-ÑÑÑÐ°Ð½Ð¸Ñ Ñ Ð¸ÑполÑзованием DOM:
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
ÐÑÐ¾Ñ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ ÑодеÑÐ¶Ð¸Ñ Ð¿ÑимеÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ инÑеÑÑейÑа, коÑоÑÑй Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð² Ñвоей ÑазÑабоÑке. РнекоÑоÑÑÑ
ÑлÑÑаÑÑ
пÑимеÑÑ - полноÑеннÑе веб-ÑÑÑаниÑÑ Ñ Ð´Ð¾ÑÑÑпом к DOM в ÑлеменÑе <script>,
Ñакже пеÑеÑиÑÐ»ÐµÐ½Ñ ÑлеменÑÑ, необÑ
одимÑе ÑÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ ÑкÑÐ¸Ð¿Ñ Ð² ÑоÑме, и HTML-ÑлеменÑÑ, над коÑоÑÑми бÑдÑÑ Ð¿ÑоизводиÑÑÑÑ Ð¾Ð¿ÐµÑаÑии DOM. Ðогда вÑÑÑеÑаеÑÑÑ Ñакой ÑлÑÑай, можно пÑоÑÑо копиÑоваÑÑ Ð¸ вÑÑавиÑÑ Ð¿ÑÐ¸Ð¼ÐµÑ Ð² новÑй HTML-докÑменÑ, ÑоÑ
ÑаниÑÑ Ð¸ запÑÑÑиÑÑ ÐµÐ³Ð¾ в бÑаÑзеÑе.
ÐÑÑÑ ÑлÑÑаи, однако, где пÑимеÑÑ Ð±Ð¾Ð»ÐµÐµ лакониÑнÑе. ЧÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ Ð¿ÑимеÑÑ, коÑоÑÑе лиÑÑ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑиÑÑÑÑ Ð¾ÑÐ½Ð¾Ð²Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ð¸Ð½ÑеÑÑейÑов Ñ HTML-ÑлеменÑами, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе подгоÑовиÑÑ ÑеÑÑовÑÑ ÑÑÑаниÑÑ, в коÑоÑÑÑ Ð±ÑдеÑе помеÑаÑÑ ÑÑнкÑии внÑÑÑÑ ÑкÑипÑов. СледÑÑÑÐ°Ñ Ð¾ÑÐµÐ½Ñ Ð¿ÑоÑÑÐ°Ñ Ð²ÐµÐ±-ÑÑÑаниÑа ÑодеÑÐ¶Ð¸Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ <script>
в заголовке, в коÑоÑÑй Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе помеÑÑиÑÑ ÑÑнкÑии, ÑÑÐ¾Ð±Ñ Ð¿ÑоÑеÑÑиÑоваÑÑ Ð¸Ð½ÑеÑÑейÑ. СÑÑаниÑа ÑодеÑÐ¶Ð¸Ñ Ð½ÐµÑколÑко ÑлеменÑов Ñ Ð°ÑÑибÑÑами, коÑоÑÑе можно возвÑаÑаÑÑ, ÑÑÑанавливаÑÑ Ð¸Ð»Ð¸, дÑÑгими Ñловами, манипÑлиÑоваÑÑ Ð¸ ÑодеÑÐ¶Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑÑкий инÑеÑÑейÑ, необÑ
одимÑй, ÑÑÐ¾Ð±Ñ Ð²ÑзÑваÑÑ Ð½ÑжнÑе ÑÑнкÑии из бÑаÑзеÑа.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑÑÑ ÑеÑÑовÑÑ ÑÑÑаниÑÑ Ð¸Ð»Ð¸ поÑ
ожÑÑ Ð´Ð»Ñ Ð¿ÑовеÑки инÑеÑÑейÑов DOM, коÑоÑÑе Ð²Ð°Ñ Ð¸Ð½ÑеÑеÑÑÑÑ Ð¸ пÑоÑмоÑÑа Ñого, как они ÑабоÑаÑÑ Ð² бÑаÑзеÑаÑ
. ÐÑ Ð¼Ð¾Ð¶ÐµÑе обновиÑÑ ÑодеÑжимое ÑÑнкÑии test()
пÑи необÑ
одимоÑÑи, ÑоздаÑÑ Ð±Ð¾Ð»ÑÑе кнопок или добавиÑÑ ÑлеменÑÑ Ð¿Ñи необÑ
одимоÑÑи.
<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></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>
ÐÑÑгие ÑÑаÑÑи
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