ÐавайÑе деÑалÑнÑÑе ÑозглÑнемо вÑзли DOM.
У ÑÑй Ð³Ð»Ð°Ð²Ñ Ð¼Ð¸ ÑозглÑнемо ÑÑ ÑÑÑнÑÑÑÑ Ñ Ð´ÑзнаÑмоÑÑ Ð¿Ñо найбÑлÑÑ ÑаÑÑо викоÑиÑÑовÑÐ²Ð°Ð½Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ.
ÐлаÑи DOM вÑзлÑв
Ð ÑÐ·Ð½Ñ Ð²Ñзли DOM можÑÑÑ Ð¼Ð°Ñи ÑÑÐ·Ð½Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ. ÐапÑиклад, елеменÑ, Ñо вÑдповÑÐ´Ð°Ñ ÑÐµÐ³Ñ <a>, Ð¼Ð°Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ, повâÑÐ·Ð°Ð½Ñ Ð· поÑиланнÑм, ÑÐ¾Ð´Ñ Ñк елеменÑ, Ñо вÑдповÑÐ´Ð°Ñ <input>, Ð¼Ð°Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ, повâÑÐ·Ð°Ð½Ñ Ð· введеннÑм даниÑ
ÑоÑо. ТекÑÑÐ¾Ð²Ñ Ð²Ñзли вÑдÑÑзнÑÑÑÑÑÑ Ð²Ñд вÑзлÑв елеменÑÑв. ÐÑоÑе, мÑж ними Ñакож ÑÑнÑÑÑÑ Ð·Ð°Ð³Ð°Ð»ÑÐ½Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ Ñа меÑоди, оÑкÑлÑки вÑÑ ÐºÐ»Ð°Ñи вÑзлÑв DOM ÑÑвоÑÑÑÑÑ ÑÐ´Ð¸Ð½Ñ ÑÑÑаÑÑ
ÑÑ.
Ðожен вÑзол DOM належиÑÑ Ð²ÑдповÑÐ´Ð½Ð¾Ð¼Ñ Ð²Ð±ÑÐ´Ð¾Ð²Ð°Ð½Ð¾Ð¼Ñ ÐºÐ»Ð°ÑÑ.
ÐоÑенем ÑÑÑаÑÑ ÑÑ Ñ EventTarget, вÑд нÑого ÑÑпадковÑÑÑÑÑÑ Node, а ÑнÑÑ Ð²Ñзли DOM ÑÑпадкÑÑÑÑ Ð²Ð¶Ðµ вÑд нÑого.
Ðа Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¾Ð¼Ñ Ð½Ð¸Ð¶Ñе ÑиÑÑÐ½ÐºÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð¾ÑÐ½Ð¾Ð²Ð½Ñ ÐºÐ»Ð°Ñи:
Ð¦Ñ ÐºÐ»Ð°Ñи:
-
EventTarget â Ñе коÑеневий âабÑÑÑакÑнийâ ÐºÐ»Ð°Ñ Ð´Ð»Ñ Ð²ÑÑого.
ÐбâÑкÑи ÑÑого клаÑÑ Ð½Ñколи не ÑÑвоÑÑÑÑÑÑÑ. ÐÑн ÑлÑжиÑÑ Ð¾ÑновоÑ, ÑÐ¾Ð¼Ñ Ð²ÑÑ Ð²Ñзли DOM пÑдÑÑимÑÑÑÑ Ñак Ð·Ð²Ð°Ð½Ñ âподÑÑâ, ÑÐºÑ Ð¼Ð¸ ÑозглÑнемо пÑзнÑÑе.
-
Node â Ñакож âабÑÑÑакÑнийâ клаÑ, Ñкий Ñ Ð±Ð°Ð·Ð¾Ð²Ð¸Ð¼ Ð´Ð»Ñ Ð²ÑзлÑв DOM.
ÐÑн Ð½Ð°Ð´Ð°Ñ Ð¾ÑÐ½Ð¾Ð²Ð½Ñ ÑÑнкÑÑоналÑÐ½Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ÑÑÑ Ð´ÐµÑева:
parentNode,nextSibling,childNodesÑа ÑнÑÑ (Ñе геÑеÑи). ÐбâÑкÑи клаÑÑNodeнÑколи не ÑÑвоÑÑÑÑÑÑÑ, але ÑÑнÑÑÑÑ ÑнÑÑ ÐºÐ»Ð°Ñи, ÑÐºÑ ÑÑпадковÑÑÑÑ Ð¹Ð¾Ð³Ð¾ (Ñ Ñаким Ñином ÑÑпадковÑÑÑÑ ÑÑнкÑÑоналÑнÑÑÑÑNode). -
Document, з ÑÑÑоÑиÑÐ½Ð¸Ñ Ð¿ÑиÑин його ÑаÑÑо ÑÑпадковÑÑ
HTMLDocument(Ñ Ð¾Ñа оÑÑÐ°Ð½Ð½Ñ ÑпеÑиÑÑкаÑÑÑ ÑÑого не вимагаÑÑÑ), ÑвлÑÑ ÑÐ¾Ð±Ð¾Ñ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ Ð² ÑÑломÑ.ÐлобалÑний обâÑкÑ
documentналежиÑÑ Ñаме до ÑÑого клаÑÑ. ÐÑн ÑлÑжиÑÑ ÑоÑÐºÐ¾Ñ Ð²Ñ Ð¾Ð´Ñ Ð² DOM. -
CharacterData â âабÑÑÑакÑнийâ клаÑ, ÑÑпадковÑÑÑÑÑÑ:
- Text â клаÑ, Ñо вÑдповÑÐ´Ð°Ñ ÑекÑÑÑ Ð²ÑеÑÐµÐ´Ð¸Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв, напÑиклад,
ÐÑивÑÑÑ<p>ÐÑивÑÑ</p>. - Comment â ÐºÐ»Ð°Ñ Ð´Ð»Ñ ÐºÐ¾Ð¼ÐµÐ½ÑаÑÑв. Ðони ÑкÑиÑÑ Ð²Ñд коÑиÑÑÑваÑа, але кожен коменÑÐ°Ñ ÑÑÐ°Ñ ÑаÑÑÐ¸Ð½Ð¾Ñ DOM.
- Text â клаÑ, Ñо вÑдповÑÐ´Ð°Ñ ÑекÑÑÑ Ð²ÑеÑÐµÐ´Ð¸Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв, напÑиклад,
-
Element â базовий ÐºÐ»Ð°Ñ Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв DOM.
ÐÑн Ð½Ð°Ð´Ð°Ñ Ð½Ð°Ð²ÑгаÑÑÐ¹Ð½Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ÑÑÑ Ð½Ð° ÑÑÐ²Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв, ÑÐ°ÐºÑ Ñк
nextElementSibling,childrenÑа меÑоди поÑÑкÑ, ÑÐ°ÐºÑ ÑкgetElementsByTagName,querySelector.ÐÑаÑÐ·ÐµÑ Ð¿ÑдÑÑимÑÑ Ð½Ðµ лиÑе HTML, а Ñакож XML Ñа SVG. Ð¢Ð¾Ð¼Ñ ÐºÐ»Ð°Ñ
ElementÑлÑжиÑÑ Ð±Ð°Ð·Ð¾Ñ Ð´Ð»Ñ Ð±ÑлÑÑ ÐºÐ¾Ð½ÐºÑеÑÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑв:SVGElement,XMLElement(вони нам ÑÑÑ Ð½Ðµ поÑÑÑбнÑ) ÑаHTMLElement. -
ÐаÑеÑÑÑ, HTMLElement â Ñе базовий ÐºÐ»Ð°Ñ Ð´Ð»Ñ Ð²ÑÑÑ HTML-елеменÑÑв. Ðи бÑдемо пÑаÑÑваÑи з ним бÑлÑÑÑÑÑÑ ÑаÑÑ.
ÐÑн ÑÑпадковÑÑÑÑÑÑ ÐºÐ»Ð°Ñами конкÑеÑÐ½Ð¸Ñ HTML-елеменÑÑв:
- HTMLInputElement â ÐºÐ»Ð°Ñ Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв
<input>, - HTMLBodyElement â ÐºÐ»Ð°Ñ Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв
<body>, - HTMLAnchorElement â ÐºÐ»Ð°Ñ Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв
<a>, - â¦ÑоÑо.
- HTMLInputElement â ÐºÐ»Ð°Ñ Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв
ÐÑнÑÑ Ð±Ð°Ð³Ð°Ñо ÑнÑиÑ
ÑегÑв з влаÑними клаÑами, ÑÐºÑ Ð¼Ð¾Ð¶ÑÑÑ Ð¼Ð°Ñи Ð¿ÐµÐ²Ð½Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ Ñа меÑоди, ÑÐ¾Ð´Ñ Ñк деÑÐºÑ ÐµÐ»ÐµÐ¼ÐµÐ½Ñи, ÑÐ°ÐºÑ Ñк <span>, <section>, <article> не маÑÑÑ ÑпеÑиÑÑÑниÑ
влаÑÑивоÑÑей Ñ, ÑомÑ, вони Ñ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»ÑÑами клаÑÑ HTMLElement.
Таким Ñином, повний набÑÑ Ð²Ð»Ð°ÑÑивоÑÑей Ñа меÑодÑв Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¾Ð³Ð¾ вÑзла ÑоÑмÑÑÑÑÑÑ Ð² ÑезÑлÑÑаÑÑ Ð»Ð°Ð½ÑÑжка ÑÑпадкÑваннÑ.
ÐапÑиклад, ÑозглÑнÑмо обâÑÐºÑ DOM Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñа <input>. ÐÑн належиÑÑ Ð´Ð¾ клаÑÑ HTMLInputElement.
ÐÑн оÑÑимÑÑ Ð²Ð»Ð°ÑÑивоÑÑÑ Ñа меÑоди ÑлÑÑ Ð¾Ð¼ âнакладаннÑâ наÑÑÑÐ¿Ð½Ð¸Ñ ÐºÐ»Ð°ÑÑв (Ð¿Ð¾Ð´Ð°Ð½Ñ Ð² поÑÑÐ´ÐºÑ ÑÑпадкÑваннÑ):
HTMLInputElementâ Ñей ÐºÐ»Ð°Ñ Ð½Ð°Ð´Ð°Ñ ÑпеÑиÑÑÑÐ½Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñа введеннÑ,HTMLElementâ Ð½Ð°Ð´Ð°Ñ Ð·Ð°Ð³Ð°Ð»ÑÐ½Ñ Ð¼ÐµÑоди Ð´Ð»Ñ HTML-елеменÑÑв (ÑÐ°ÐºÑ Ñк оÑÑÐ¸Ð¼Ð°Ð½Ð½Ñ Ñа вÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°ÑенÑ),Elementâ Ð½Ð°Ð´Ð°Ñ Ð·Ð°Ð³Ð°Ð»ÑÐ½Ñ Ð¼ÐµÑоди Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв,Nodeâ Ð½Ð°Ð´Ð°Ñ Ð·Ð°Ð³Ð°Ð»ÑÐ½Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ Ð´Ð»Ñ Ð²ÑзлÑв DOM,EventTargetâ Ñей ÐºÐ»Ð°Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑÑÑ Ð¿ÑдÑÑÐ¸Ð¼ÐºÑ Ð¿Ð¾Ð´Ñй (ми ÑозглÑнемо Ñе пÑзнÑÑе),- ⦠Ñ, наÑеÑÑÑ, Ñей ÐºÐ»Ð°Ñ ÑÑпадковÑÑÑÑÑÑ Ð²Ñд
Object, ÑÐ¾Ð¼Ñ Ð²Ñн Ð¼Ð°Ñ Ð´Ð¾ÑÑÑп до загалÑÐ½Ð¸Ñ Ð¼ÐµÑодÑв âпÑоÑÑого обâÑкÑаâ, напÑиклад,hasOwnProperty.
Щоб пеÑеглÑнÑÑи ÑмâÑ ÐºÐ»Ð°ÑÑ Ð²Ñзла DOM, ми можемо згадаÑи, Ñо зазвиÑай в обâÑкÑа Ñ Ð²Ð»Ð°ÑÑивÑÑÑÑ constructor. Ðона поÑилаÑÑÑÑÑ Ð½Ð° конÑÑÑÑкÑÐ¾Ñ ÐºÐ»Ð°ÑÑ, Ñ constructor.name Ñ Ð¹Ð¾Ð³Ð¾ ÑмâÑм:
alert(document.body.constructor.name); // HTMLBodyElement
â¦Ðбо ми можемо пÑоÑÑо викликаÑи toString:
alert(document.body); // [object HTMLBodyElement]
Ðи Ñакож можемо викоÑиÑÑовÑваÑи instanceof, Ñоб пеÑевÑÑиÑи наÑлÑдÑваннÑ:
alert(document.body instanceof HTMLBodyElement); // true
alert(document.body instanceof HTMLElement); // true
alert(document.body instanceof Element); // true
alert(document.body instanceof Node); // true
alert(document.body instanceof EventTarget); // true
Як ми баÑимо, вÑзли DOM Ñ Ð·Ð²Ð¸Ñайними обâÑкÑами JavaScript. Ðони викоÑиÑÑовÑÑÑÑ Ð¿ÑоÑоÑÐ¸Ð¿Ð½Ñ ÐºÐ»Ð°Ñи Ð´Ð»Ñ ÑÑпадкÑваннÑ.
Це Ñакож легко побаÑиÑи, ÑкÑо вивеÑÑи ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ console.dir(elem) Ñ Ð±ÑаÑзеÑÑ. Там в конÑÐ¾Ð»Ñ Ð²Ð¸ побаÑиÑе HTMLElement.prototype, Element.prototype Ñ Ñак далÑ.
console.dir(elem) пÑоÑи console.log(elem)ÐÑлÑÑÑÑÑÑ Ð±ÑаÑзеÑÑв пÑдÑÑимÑÑÑÑ Ð´Ð²Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Ñ ÑвоÑÑ
ÑнÑÑÑÑменÑаÑ
ÑозÑобника: console.log Ñа console.dir. Ðони виводÑÑÑ ÑÐ²Ð¾Ñ Ð°ÑгÑменÑи в конÑолÑ. ÐÐ»Ñ Ð¾Ð±âÑкÑÑв JavaScript ÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ зазвиÑай пÑаÑÑÑÑÑ Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ð¾.
Ðле Ð´Ð»Ñ DOM елеменÑÑв вони ÑÑзнÑ:
console.log(elem)показÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ñ Ð²Ð¸Ð³Ð»ÑÐ´Ñ DOM деÑева.console.dir(elem)показÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ñк обâÑÐºÑ DOM, Ñе добÑе Ð´Ð»Ñ Ñого, Ñоб вивÑиÑи його влаÑÑивоÑÑÑ.
СпÑобÑйÑе Ñе на document.body.
У ÑпеÑиÑÑкаÑÑÑ, клаÑи DOM опиÑÐ°Ð½Ñ Ð½Ðµ за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ JavaScript, а ÑпеÑÑалÑÐ½Ð¾Ñ Ð¼Ð¾Ð²Ð¾Ñ Ð¾Ð¿Ð¸ÑÑ ÑнÑеÑÑейÑÑ(IDL), ÑÐºÑ Ð·Ð°Ð·Ð²Ð¸Ñай легко зÑозÑмÑÑи.
Ð IDL вÑÑ Ð²Ð»Ð°ÑÑивоÑÑÑ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð· ÑÑ
нÑми Ñипами. ÐапÑиклад, DOMString, boolean ÑоÑо.
ÐÑÑ Ð²Ð¸ÑÑг з ÑÑÑÑ ÑпеÑиÑÑкаÑÑÑ, з коменÑаÑÑми:
// Define HTMLInputElement
// ÐвокÑапка ":" ознаÑаÑ, Ñо HTMLInputElement наÑлÑдÑÑÑÑÑÑ Ð²Ñд HTMLElement
interface HTMLInputElement: HTMLElement {
// ÑÑÑ Ð²Ð¸Ð·Ð½Ð°ÑаÑÑÑÑÑ Ð²ÑÑ Ð²Ð»Ð°ÑÑивоÑÑÑ Ñа меÑоди елеменÑÑв <input>
// "DOMString" ознаÑаÑ, Ñо знаÑеннÑм влаÑÑивоÑÑÑ Ñ ÑÑдок
attribute DOMString accept;
attribute DOMString alt;
attribute DOMString autocomplete;
attribute DOMString value;
// бÑлева влаÑÑивÑÑÑÑ (true/false)
attribute boolean autofocus;
...
// ÑÐµÐ¿ÐµÑ Ð¼ÐµÑод: "void" ознаÑаÑ, Ñо меÑод не повеÑÑÐ°Ñ Ð·Ð½Ð°ÑеннÑ
void select();
...
}
ÐлаÑÑивÑÑÑÑ ânodeTypeâ
ÐлаÑÑивÑÑÑÑ nodeType Ð½Ð°Ð´Ð°Ñ Ñе один âÑÑаÑомоднийâ ÑпоÑÑб оÑÑÐ¸Ð¼Ð°Ð½Ð½Ñ âÑипÑâ вÑзла DOM.
Ðона Ð¼Ð°Ñ ÑиÑлове знаÑеннÑ:
elem.nodeType == 1Ð´Ð»Ñ Ð²ÑзлÑв-елеменÑÑв,elem.nodeType == 3Ð´Ð»Ñ ÑекÑÑÐ¾Ð²Ð¸Ñ Ð²ÑзлÑв,elem.nodeType == 9Ð´Ð»Ñ Ð¾Ð±âÑкÑа докÑменÑа,- Ð ÑпеÑиÑÑкаÑÑÑ Ð¼Ð¾Ð¶Ð½Ð° пеÑеглÑнÑÑи вÑÑ Ð·Ð½Ð°ÑеннÑ.
ÐапÑиклад:
<body>
<script>
let elem = document.body;
// давайÑе пеÑевÑÑимо: Ñкий Ñип вÑзла в elem?
alert(elem.nodeType); // 1 => element
// Ñ Ð¿ÐµÑÑий доÑÑÑнÑй ÐµÐ»ÐµÐ¼ÐµÐ½Ñ ...
alert(elem.firstChild.nodeType); // 3 => text
// Ð´Ð»Ñ Ð¾Ð±âÑкÑа document Ñип доÑÑвнÑÑ 9
alert( document.nodeType ); // 9
</script>
</body>
У ÑÑÑаÑниÑ
ÑкÑипÑаÑ
ми можемо викоÑиÑÑовÑваÑи опеÑаÑÐ¾Ñ instanceof Ñа ÑнÑÑ Ð¿ÐµÑевÑÑки на оÑÐ½Ð¾Ð²Ñ ÐºÐ»Ð°ÑÑв Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ ÑÐ¸Ð¿Ñ Ð²Ñзла, Ñо може бÑÑи бÑлÑÑ Ð·ÑÑÑним. Ðднак ÑÐ½Ð¾Ð´Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ nodeType може бÑÑи пÑоÑÑÑÑим. Це дозволÑÑ Ð½Ð°Ð¼ ÑиÑаÑи Ñип вÑзла, але ми не можемо змÑнÑваÑи його за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ ÑÑÑÑ Ð²Ð»Ð°ÑÑивоÑÑÑ.
Тег: nodeName Ñа tagName
ÐÐ»Ñ Ð²Ð¸Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ ÑÐ¼ÐµÐ½Ñ ÑÐµÐ³Ñ DOM-вÑзла ми можемо ÑкоÑиÑÑаÑиÑÑ Ð²Ð»Ð°ÑÑивоÑÑÑми nodeName або tagName.
ÐапÑиклад:
alert( document.body.nodeName ); // BODY
alert( document.body.tagName ); // BODY
Чи ÑÑнÑÑ ÑÑзниÑÑ Ð¼Ñж tagName Ñ nodeName?
ÐвÑÑно, ÑÑзниÑÑ Ð²ÑдобÑажаÑÑÑÑÑ Ñ ÑÑ Ð½Ð°Ð·Ð²Ð°Ñ , але Ñе дÑйÑно ÑÑÐ¾Ñ Ð¸ неоÑевидно.
- ÐлаÑÑивÑÑÑÑ
tagNameÑÑнÑÑ Ð»Ð¸Ñе Ð´Ð»Ñ Ð²ÑзлÑв ÑипÑElement. - ÐлаÑÑивÑÑÑÑ
nodeNameвизнаÑаÑÑÑÑÑ Ð´Ð»Ñ Ð±ÑдÑ-Ñкого вÑзла ÑипÑNode:- Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв вона Ð¼Ð°Ñ Ñе ж знаÑеннÑ, Ñо Ñ
tagName. - Ð´Ð»Ñ ÑнÑÐ¸Ñ ÑипÑв вÑзлÑв (ÑекÑÑ, коменÑÐ°Ñ ÑоÑо) вона мÑÑÑиÑÑ ÑÑдок з Ñипом вÑзла.
- Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв вона Ð¼Ð°Ñ Ñе ж знаÑеннÑ, Ñо Ñ
ÐнÑими Ñловами, tagName пÑдÑÑимÑÑÑÑÑÑ Ð»Ð¸Ñе вÑзлами елеменÑÑв (адже поÑ
одиÑÑ Ð²Ñд клаÑÑ Element), ÑÐ¾Ð´Ñ Ñк nodeName може ÑказаÑи ÑоÑÑ Ð¿Ñо ÑнÑÑ Ñипи вÑзлÑв.
ÐÐ»Ñ Ð¿ÑикладÑ, поÑÑвнÑÑмо tagName Ñ nodeName Ð´Ð»Ñ Ð²Ñзла document Ñа коменÑаÑÑ:
<body><!-- коменÑÐ°Ñ -->
<script>
// Ð´Ð»Ñ ÐºÐ¾Ð¼ÐµÐ½ÑаÑÑ
alert( document.body.firstChild.tagName ); // undefined (Ñе не елеменÑ)
alert( document.body.firstChild.nodeName ); // #comment
// Ð´Ð»Ñ Ð´Ð¾ÐºÑменÑÑ
alert( document.tagName ); // undefined (Ñе не елеменÑ)
alert( document.nodeName ); // #document
</script>
</body>
ЯкÑо ми маÑмо ÑпÑÐ°Ð²Ñ Ð»Ð¸Ñе з елеменÑами, Ñо ми можемо викоÑиÑÑовÑваÑи Ñк tagName, Ñак Ñ nodeName â Ð½ÐµÐ¼Ð°Ñ Ð½ÑÑÐºÐ¾Ñ ÑÑзниÑÑ.
ÐÑаÑÐ·ÐµÑ Ð¼Ð°Ñ Ð´Ð²Ð° Ñежими обÑобки докÑменÑÑв: HTML Ñа XML. ÐазвиÑай HTML-Ñежим викоÑиÑÑовÑÑÑÑÑÑ Ð´Ð»Ñ Ð²ÐµÐ±-ÑÑоÑÑнок. Режим XML вмикаÑÑÑÑÑ, коли бÑаÑÐ·ÐµÑ Ð¾ÑÑимÑÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ XML з заголовком: Content-Type: application/xml+xhtml.
У ÑÐµÐ¶Ð¸Ð¼Ñ HTML tagName/nodeName завжди пиÑÑÑÑÑÑ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼Ð¸ лÑÑеÑами: Ñе BODY Ñк Ð´Ð»Ñ <body>, Ñак Ñ Ð´Ð»Ñ <BoDy>.
У ÑÐµÐ¶Ð¸Ð¼Ñ XML ÑегÑÑÑÑ Ð»ÑÑÐµÑ Ð·Ð±ÐµÑÑгаÑÑÑÑÑ âÑк Ñâ. Рданий ÑÐ°Ñ XML Ñежим ÑÑдко викоÑиÑÑовÑÑÑÑÑÑ.
innerHTML: вмÑÑÑ
ÐлаÑÑивÑÑÑÑ innerHTML дозволÑÑ Ð¾ÑÑимаÑи HTML вÑеÑÐµÐ´Ð¸Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñа Ñк ÑÑдок.
Ðи Ñакож можемо змÑнÑваÑи його. Таким Ñином, Ñе один з найпоÑÑжнÑÑÐ¸Ñ ÑпоÑобÑв змÑни ÑнÑоÑмаÑÑÑ Ð½Ð° ÑÑоÑÑнÑÑ.
Ðа пÑÐ¸ÐºÐ»Ð°Ð´Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð¾ вмÑÑÑ document.body Ñкий поÑÑм повнÑÑÑÑ Ð·Ð°Ð¼ÑнÑÑÑÑÑÑ.
<body>
<p>A paragraph</p>
<div>A div</div>
<script>
alert( document.body.innerHTML ); // ÑиÑаÑмо поÑоÑний вмÑÑÑ
document.body.innerHTML = 'Ðовий BODY!'; // замÑнÑÑмо його
</script>
</body>
Ðи можемо ÑпÑобÑваÑи вÑÑавиÑи невалÑдний HTML, бÑаÑÐ·ÐµÑ Ð²Ð¸Ð¿ÑавиÑÑ Ð½Ð°ÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸:
<body>
<script>
document.body.innerHTML = '<b>ÑеÑÑ'; // забÑли закÑиÑи Ñег
alert( document.body.innerHTML ); // <b>ÑеÑÑ</b> (випÑавлено)
</script>
</body>
ЯкÑо innerHTML вÑÑавлÑÑ Ñег <script> Ñ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ â вÑн ÑÑÐ°Ñ ÑаÑÑÐ¸Ð½Ð¾Ñ HTML, але не виконÑÑÑÑÑÑ.
ÐбеÑежно: âinnerHTML+=â повнÑÑÑÑ Ð¿ÐµÑезапиÑÑÑ Ð²Ð¼ÑÑÑ
Ðи можемо додаваÑи HTML до елеменÑа, викоÑиÑÑовÑÑÑи elem.innerHTML+="бÑлÑÑе html".
ÐапÑиклад:
chatDiv.innerHTML += "<div>ÐÑивÑÑ<img src='smile.gif'/> !</div>";
chatDiv.innerHTML += "Як ÑпÑави?";
Ðле ми Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð±ÑÑи дÑже обеÑежними, оÑкÑлÑки Ñе, Ñо вÑдбÑваÑÑÑÑÑ â Ñе не додаваннÑ, а повний пеÑезапиÑ.
Ð¢ÐµÑ Ð½ÑÑно ÑÑ Ð´Ð²Ð° ÑÑдки ÑоблÑÑÑ Ñе ж Ñаме:
elem.innerHTML += "...";
// коÑоÑÑий ÑпоÑÑб запиÑаÑи:
elem.innerHTML = elem.innerHTML + "..."
ÐнÑими Ñловами, innerHTML+= ÑобиÑÑ Ð½Ð°ÑÑÑпне:
- СÑаÑий вмÑÑÑ Ð²Ð¸Ð´Ð°Ð»ÑÑÑÑÑÑ.
- ÐамÑÑÑÑ Ð½Ñого напиÑано новий
innerHTML(конкаÑенаÑÑÑ ÑÑаÑого Ñа нового).
ÐÑкÑлÑки вмÑÑÑ âобнÑлÑÑÑÑÑÑâ Ñ Ð¿ÐµÑезапиÑÑÑÑÑÑÑ Ð· нÑлÑ, вÑÑ Ð·Ð¾Ð±ÑÐ°Ð¶ÐµÐ½Ð½Ñ Ñа ÑнÑÑ ÑеÑÑÑÑи бÑдÑÑÑ Ð¿ÐµÑезаванÑаженÑ.
У пÑÐ¸ÐºÐ»Ð°Ð´Ñ chatDiv виÑе ÑÑдок chatDiv.innerHTML+="Як ÑпÑави?" повнÑÑÑÑ Ð¿ÐµÑезапиÑÑÑ Ð²Ð¼ÑÑÑ HTML Ñ Ð¿ÐµÑезаванÑажÑÑ Ð·Ð¾Ð±ÑÐ°Ð¶ÐµÐ½Ð½Ñ smile.gif (ÑподÑваÑмоÑÑ, Ñо воно закеÑоване). ЯкÑо chatDiv Ð¼Ð°Ñ Ð±Ð°Ð³Ð°Ñо ÑнÑого ÑекÑÑÑ Ñа зобÑаженÑ, Ñо пеÑезаванÑÐ°Ð¶ÐµÐ½Ð½Ñ ÑÑане помÑÑним.
Рй ÑнÑÑ Ð¿Ð¾Ð±ÑÑÐ½Ñ ÐµÑекÑи. ÐапÑиклад, ÑкÑо ÑÑаÑий ÑекÑÑ Ð²Ð¸Ð´Ñлений за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Ð¼Ð¸ÑÑ, Ñо бÑлÑÑÑÑÑÑ Ð±ÑаÑзеÑÑв видалÑÑÑ Ð²Ð¸Ð´ÑÐ»ÐµÐ½Ð½Ñ Ð¿Ñд ÑÐ°Ñ Ð¿ÐµÑезапиÑÑ innerHTML. Ð ÑкÑо Ñ <input> з введеним ÑекÑÑом, Ñо ÑекÑÑ Ð±Ñде видалено. Ð Ñак далÑ.
Ðа ÑаÑÑÑ, Ñ Ð¹ ÑнÑÑ ÑпоÑоби Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ HTML, кÑÑм innerHTML, Ñ Ð¼Ð¸ ÑкоÑо з ними ознайомимоÑÑ.
outerHTML: повний HTML елеменÑа
ÐлаÑÑивÑÑÑÑ outerHTML мÑÑÑиÑÑ Ð¿Ð¾Ð²Ð½Ð¸Ð¹ HTML елеменÑа. Це Ñк innerHTML, але вклÑÑÐ°Ñ Ñам елеменÑ.
ÐÑÑ Ð¿Ñиклад:
<div id="elem">ÐÑивÑÑ <b>СвÑÑ</b></div>
<script>
alert(elem.outerHTML); // <div id="elem">ÐÑивÑÑ <b>СвÑÑ</b></div>
</script>
ÐбеÑежно: на вÑдмÑÐ½Ñ Ð²Ñд innerHTML, Ð·Ð°Ð¿Ð¸Ñ Ñ outerHTML не змÑнÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ. ÐамÑÑÑÑ ÑÑого вÑн замÑнÑÑ Ð¹Ð¾Ð³Ð¾ в DOM.
Так, Ñе звÑÑиÑÑ Ð´Ð¸Ð²Ð½Ð¾, Ñак воно Ñ Ñ, оÑÑ ÑÐ¾Ð¼Ñ Ð¼Ð¸ Ñобимо окÑÐµÐ¼Ñ Ð¿ÑимÑÑÐºÑ Ð¿Ñо Ñе ÑÑÑ. ÐодивÑÑÑÑÑ.
РозглÑнемо пÑиклад:
<div>ÐÑивÑÑ, ÑвÑÑ!</div>
<script>
let div = document.querySelector('div');
// замÑниÑи div.outerHTML на <p>...</p>
div.outerHTML = '<p>Ðовий елеменÑ</p>'; // (*)
// Ðго! 'div' вÑе Ñе Ñой Ñамий!
alert(div.outerHTML); // <div>ÐÑивÑÑ, ÑвÑÑ!</div> (**)
</script>
ÐиглÑÐ´Ð°Ñ Ð´Ñже дивно, Ñи не Ñак?
У ÑÑÐ´ÐºÑ (*) ми замÑнили div на <p>Ðовий елеменÑ</p>. У зовнÑÑнÑÐ¾Ð¼Ñ Ð´Ð¾ÐºÑменÑÑ (DOM) ми можемо побаÑиÑи новий вмÑÑÑ Ð·Ð°Ð¼ÑÑÑÑ <div>. Ðле, Ñк ми можемо баÑиÑи в ÑÑÐ´ÐºÑ (**), знаÑÐµÐ½Ð½Ñ ÑÑаÑÐ¾Ñ Ð·Ð¼ÑÐ½Ð½Ð¾Ñ div не змÑнилоÑÑ!
ÐÑиÑвоÑÐ½Ð½Ñ outerHTML не змÑнÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ DOM (обâÑкÑ, на Ñкий поÑилаÑÑÑÑÑ, Ñ ÑÑÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ, змÑнна div), але видалÑÑ Ð¹Ð¾Ð³Ð¾ з DOM Ñ Ð²ÑÑавлÑÑ Ð½Ð¾Ð²Ð¸Ð¹ HTML замÑÑÑÑ Ð½Ñого.
ÐÑже, в div.outerHTML=... ÑÑалоÑÑ Ð½Ð°ÑÑÑпне:
divбÑв видалений з докÑменÑа.- ÐнÑий ÑмаÑок HTML
<p>Ðовий елеменÑ</p>бÑв вÑÑавлений на його мÑÑÑе. - ÐмÑнна
divÑе Ð¼Ð°Ñ ÑÐ²Ð¾Ñ ÑÑаÑе знаÑеннÑ. Ðовий HTML не бÑв збеÑежений в Ð¶Ð¾Ð´Ð½Ñ Ð·Ð¼ÑннÑ.
Так дÑже легко пÑипÑÑÑиÑиÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸: змÑниÑи div.outerHTML, а поÑÑм пÑодовжÑваÑи пÑаÑÑваÑи з div вважаÑÑи, Ñо його вмÑÑÑ Ð·Ð¼ÑнивÑÑ. Ðднак, ÑÑого не ÑÑалоÑÑ. Таке пÑипÑÑÐµÐ½Ð½Ñ Ð±Ñло б пÑавилÑним Ð´Ð»Ñ innerHTML, але не Ð´Ð»Ñ outerHTML.
Ðи можемо запиÑÑваÑи Ñ elem.outerHTML, але маÑмо памâÑÑаÑи, Ñо Ñе не змÑнÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ, до Ñкого ми запиÑÑÑмо (âelemâ). ÐамÑÑÑÑ ÑÑого воно замÑнÑÑ Ð¹Ð¾Ð³Ð¾ в DOM. Ðи можемо оÑÑимаÑи поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ð½Ð¾Ð²Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñи, запиÑÑÑÑи DOM.
nodeValue/data: вмÑÑÑ ÑекÑÑÑ Ð²Ñзла
ÐлаÑÑивÑÑÑÑ innerHTML ÑÑнÑÑ Ð»Ð¸Ñе Ð´Ð»Ñ Ð²ÑзлÑв-елеменÑÑв.
ÐнÑÑ Ñипи вÑзлÑв, ÑÐ°ÐºÑ Ñк ÑекÑÑÐ¾Ð²Ñ Ð²Ñзли, маÑÑÑ ÑвÑй аналог: nodeValue Ñ data влаÑÑивоÑÑÑ. Ð¦Ñ Ð´Ð²Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ Ð¿ÑакÑиÑно ÑденÑиÑÐ½Ñ Ð·Ð° ÑвоÑм пÑизнаÑеннÑм, Ñ Ð»Ð¸Ñе незнаÑÐ½Ñ ÑÑзниÑÑ Ð² ÑпеÑиÑÑкаÑÑÑ. Ð¢Ð¾Ð¼Ñ Ð¼Ð¸ бÑдемо викоÑиÑÑовÑваÑи data, ÑÐ¾Ð¼Ñ Ñо воно коÑоÑÑе.
ÐÑÑ Ð¿Ñиклад ÑиÑÐ°Ð½Ð½Ñ Ð²Ð¼ÑÑÑÑ ÑекÑÑового вÑзла Ñа коменÑаÑÑ:
<body>
ÐÑивÑÑ
<!-- ÐоменÑÐ°Ñ -->
<script>
let text = document.body.firstChild;
alert(text.data); // ÐÑивÑÑ
let comment = text.nextSibling;
alert(comment.data); // ÐоменÑаÑ
</script>
</body>
ÐÐ»Ñ ÑекÑÑÐ¾Ð²Ð¸Ñ Ð²ÑзлÑв ми можемо ÑÑвиÑи ÑÐ¾Ð±Ñ Ð¿ÑиÑÐ¸Ð½Ñ ÑиÑаÑи або змÑниÑи ÑÑ , але ÑÐ¾Ð¼Ñ ÐºÐ¾Ð¼ÐµÐ½ÑаÑÑ?
ÐÐ½Ð¾Ð´Ñ ÑозÑобники вбÑдовÑÑÑÑ Ð² HTML ÑнÑоÑмаÑÑÑ Ð°Ð±Ð¾ ÑÐ°Ð±Ð»Ð¾Ð½Ð½Ñ ÑнÑÑÑÑкÑÑÑ, Ñк Ñ ÑÑÐ¾Ð¼Ñ Ð¿ÑикладÑ:
<!-- if isAdmin -->
<div>ÐаÑкаво пÑоÑимо, ÐдмÑн!</div>
<!-- /if -->
â¦ÐоÑÑм JavaScript може пÑоÑиÑаÑи ÑÑ Ð· влаÑÑивоÑÑÑ data Ñа обÑобиÑи вбÑÐ´Ð¾Ð²Ð°Ð½Ñ ÑнÑÑÑÑкÑÑÑ.
textContent: ÑиÑÑий ÑекÑÑ
ÐлаÑÑивÑÑÑÑ textContent Ð½Ð°Ð´Ð°Ñ Ð´Ð¾ÑÑÑп до ÑекÑÑÑ Ð²ÑеÑÐµÐ´Ð¸Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñа: лиÑе ÑекÑÑ, без ÑÑÑÑ
<ÑегÑв>.
ÐапÑиклад:
<div id="news">
<h1>Ðаголовок!</h1>
<p>ÐаÑÑÑанÑÑ Ð½Ð°Ð¿Ð°Ð´Ð°ÑÑÑ Ð½Ð° лÑдей!</p>
</div>
<script>
// Ðаголовок! ÐаÑÑÑанÑÑ Ð½Ð°Ð¿Ð°Ð´Ð°ÑÑÑ Ð½Ð° лÑдей!
alert(news.textContent);
</script>
Як ми баÑимо, повеÑÑаÑÑÑÑÑ Ð»Ð¸Ñе ÑекÑÑ, Ñк нÑби вÑÑ <Ñеги> бÑли виÑÑзанÑ, але ÑекÑÑ Ð·Ð°Ð»Ð¸ÑивÑÑ.
Ðа пÑакÑиÑÑ ÑиÑÐ°Ð½Ð½Ñ Ñакого ÑекÑÑÑ ÑÑдко поÑÑÑбне.
ÐÐ°Ð¿Ð¸Ñ Ð² textContent набагаÑо коÑиÑнÑÑе, ÑÐ¾Ð¼Ñ Ñо Ñе дозволÑÑ Ð·Ð°Ð¿Ð¸ÑаÑи ÑекÑÑ âбезпеÑним ÑпоÑобомâ.
СкажÑмо, Ñ Ð½Ð°Ñ Ñ Ð´Ð¾Ð²ÑлÑний ÑÑдок, напÑиклад Ñой, Ñо ввÑв коÑиÑÑÑваÑ, Ñ Ñкий вÑн Ñ Ð¾ÑеÑе показаÑи.
- Ðа допомогоÑ
innerHTMLвÑн бÑде вÑÑавлений âÑк HTMLâ, з ÑÑÑма HTML-Ñегами. - Ðа допомогоÑ
textContentвÑн бÑде вÑÑавлений âÑк ÑекÑÑâ, вÑÑ Ñимволи бÑдÑÑÑ ÑÑакÑÑваÑиÑÑ Ð±ÑквалÑно.
ÐоÑÑвнÑймо ÑÑ Ð´Ð²Ð° пÑÐ´Ñ Ð¾Ð´Ð¸:
<div id="elem1"></div>
<div id="elem2"></div>
<script>
let name = prompt("Як Ð²Ð°Ñ Ð·Ð²Ð°Ñи?", "<b>ÐÑÐ½Ð½Ñ ÐÑÑ
!</b>");
elem1.innerHTML = name;
elem2.textContent = name;
</script>
- ÐеÑÑий
<div>оÑÑимÑÑ Ð½Ð°Ð·Ð²Ñ âÑк HTMLâ: вÑÑ Ñеги ÑÑаÑÑÑ Ñегами, ÑÐ¾Ð¼Ñ Ð¼Ð¸ баÑимо Ð½Ð°Ð·Ð²Ñ Ð¶Ð¸Ñним ÑÑиÑÑом. - ÐÑÑгий
<div>оÑÑимÑÑ Ð½Ð°Ð·Ð²Ñ âÑк ÑекÑÑâ, ÑÐ¾Ð¼Ñ Ð¼Ð¸ бÑквалÑно баÑимо<b>ÐÑÐ½Ð½Ñ ÐÑÑ !</b>.
У бÑлÑÑоÑÑÑ Ð²Ð¸Ð¿Ð°Ð´ÐºÑв ми оÑÑкÑÑмо оÑÑимаÑи ÑекÑÑ Ð²Ñд коÑиÑÑÑваÑа, Ñ Ñ
оÑемо пÑаÑÑваÑи з ним Ñк з ÑекÑÑом. Ðи не Ñ
оÑемо непеÑедбаÑÑваниÑ
HTML-вÑÑавок на наÑÐ¾Ð¼Ñ ÑайÑÑ. ÐÑиÑвоÑÐ½Ð½Ñ textContent дозволÑÑ Ð´Ð¾ÑÑгÑи Ñаме ÑÑого.
ÐлаÑÑивÑÑÑÑ âhiddenâ
ÐÑÑибÑÑ âhiddenâ Ñа влаÑÑивÑÑÑÑ DOM визнаÑÐ°Ñ Ð²Ð¸Ð´Ð½Ð¾ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ñи нÑ.
Ðи можемо викоÑиÑÑовÑваÑи ÑÑ Ð² HTML або пÑизнаÑиÑи ÑÑ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ JavaScript, Ñк напÑиклад:
<div>Ðбидва div нижÑе пÑиÑ
ованÑ</div>
<div hidden>Ðа Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Ð°ÑÑибÑÑа "hidden"</div>
<div id="elem">JavaScript пÑизнаÑив влаÑÑивÑÑÑÑ "hidden"</div>
<script>
elem.hidden = true;
</script>
ТеÑ
нÑÑно, hidden пÑаÑÑÑ Ñак Ñамо, Ñк style="display:none". Ðле Ñе коÑоÑÑе пиÑаÑи.
ÐÑÑ Ð±Ð»Ð¸Ð¼Ð°ÑÑий елеменÑ:
<div id="elem">ÐлимаÑÑий елеменÑ</div>
<script>
setInterval(() => elem.hidden = !elem.hidden, 1000);
</script>
ÐÑлÑÑе влаÑÑивоÑÑей
ÐлеменÑи DOM Ñакож маÑÑÑ Ð´Ð¾Ð´Ð°ÑÐºÐ¾Ð²Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ, зокÑема, ÑÑ, ÑÐºÑ Ð·Ð°Ð»ÐµÐ¶Ð°ÑÑ Ð²Ñд клаÑÑ:
valueâ знаÑÐµÐ½Ð½Ñ Ð´Ð»Ñ<input>,<select>Ñа<textarea>(HTMLInputElement,HTMLSelectElementâ¦).hrefâ адÑÐµÑ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ âhrefâ длÑ<a href="...">(HTMLAnchorElement).idâ знаÑÐµÐ½Ð½Ñ Ð°ÑÑибÑÑÑ âidâ Ð´Ð»Ñ Ð²ÑÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв (HTMLElement).- â¦Ñ багаÑо ÑнÑогоâ¦
ÐапÑиклад:
<input type="text" id="elem" value="value">
<script>
alert(elem.type); // "text"
alert(elem.id); // "elem"
alert(elem.value); // "value"
</script>
ÐайбÑлÑÑ ÑÑандаÑÑÐ½Ñ Ð°ÑÑибÑÑи HTML маÑÑÑ Ð²ÑдповÑÐ´Ð½Ñ DOM-влаÑÑивÑÑÑÑ, Ñ Ð¼Ð¸ можемо оÑÑимаÑи доÑÑÑп до неÑ.
ЯкÑо ми Ñ
оÑемо знаÑи повний ÑпиÑок пÑдÑÑимÑваниÑ
влаÑÑивоÑÑей Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¾Ð³Ð¾ клаÑÑ, ми можемо знайÑи ÑÑ
Ñ ÑпеÑиÑÑкаÑÑÑ. ÐапÑиклад, HTMLInputElement задокÑменÑовано на https://html.spec.whatwg.org/#htmlinpelement.
Ðбо ÑкÑо ми Ñ
оÑÑли б оÑÑимаÑи ÑÑ
Ñвидко, або ÑÑкавимоÑÑ ÑпеÑиÑÑкаÑÑÑÑ ÐºÐ¾Ð½ÐºÑеÑного бÑаÑзеÑа â ми завжди можемо вивеÑÑи ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ console.dir(elem) Ñа пÑоÑиÑаÑи влаÑÑивоÑÑÑ. Ðбо вивÑиÑи âDOM propertiesâ на вкладÑÑ âElementsâ ÑнÑÑÑÑменÑÑв ÑозÑобника бÑаÑзеÑа.
ÐÑдÑÑмки
Ðожен вÑзол DOM належиÑÑ Ð´Ð¾ певного клаÑÑ. ÐлаÑи ÑÑвоÑÑÑÑÑ ÑÑÑаÑÑ ÑÑ. Ðовний набÑÑ Ð²Ð»Ð°ÑÑивоÑÑей Ñа меÑодÑв пÑÐ¸Ñ Ð¾Ð´Ð¸ÑÑ Ñк ÑезÑлÑÑÐ°Ñ Ð½Ð°ÑлÑдÑваннÑ.
ÐÑÐ½Ð¾Ð²Ð½Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ DOM вÑзла Ñе:
nodeType- ÐикоÑиÑÑовÑÑÑÑÑÑ Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°ÑеннÑ, Ñи Ñ Ð²Ñзол ÑекÑÑовим Ñи елеменÑним вÑзлом. ÐÐ°Ñ ÑиÑлове знаÑеннÑ:
1Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв,3Ð´Ð»Ñ ÑекÑÑÐ¾Ð²Ð¸Ñ Ð²ÑзлÑв Ñа декÑлÑка ÑнÑÐ¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ñ Ð´Ð»Ñ ÑнÑÐ¸Ñ ÑипÑв вÑзлÑв. ÐиÑе Ð´Ð»Ñ ÑиÑаннÑ. nodeName/tagName- ÐÐ»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв â Ñе назва ÑегÑв (запиÑÑÑÑÑÑÑ Ð² веÑÑ
нÑÐ¾Ð¼Ñ ÑегÑÑÑÑÑ, ÑкÑо не XML-Ñежим). ÐÐ»Ñ Ð½ÐµÐµÐ»ÐµÐ¼ÐµÐ½ÑниÑ
вÑзлÑв
nodeNameопиÑÑÑ ÑÑ Ñип. ÐиÑе Ð´Ð»Ñ ÑиÑаннÑ. innerHTML- ÐмÑÑÑ HTML елеменÑа. Ðожна змÑнÑваÑи.
outerHTML- Ðовний HTML елеменÑа. ÐпеÑаÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð²
elem.outerHTMLне змÑнÑÑ Ñамelem. ÐамÑÑÑÑ ÑÑого вÑн замÑнÑÑÑÑÑÑ Ð½Ð¾Ð²Ð¸Ð¼ HTML Ñ Ð·Ð¾Ð²Ð½ÑÑнÑÐ¾Ð¼Ñ ÐºÐ¾Ð½ÑекÑÑÑ. nodeValue/data- ÐмÑÑÑ Ð½Ðµ-елеменÑного вÑзла (ÑекÑÑÑ, коменÑаÑÑ). Ð¦Ñ Ð´Ð²Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ Ð¼Ð°Ð¹Ð¶Ðµ однаковÑ, зазвиÑай ми викоÑиÑÑовÑÑмо
data. Ðожна змÑнÑваÑи. textContent- ТекÑÑ Ð²ÑеÑÐµÐ´Ð¸Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñа: HTML мÑнÑÑ ÑÑÑ
<Ñеги>. ÐапиÑÑÑÑи в нÑого, ми оÑÑимÑÑмо ÑекÑÑ Ð²ÑеÑÐµÐ´Ð¸Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñа, з ÑÑÑма ÑпеÑÑалÑними Ñимволами Ñа Ñегами, ÑÑакÑованими Ñк ÑекÑÑ. ÐозволÑÑ Ð±ÐµÐ·Ð¿ÐµÑно вÑÑавлÑÑи коÑиÑÑÑваÑÑкий ÑекÑÑ, Ð·Ð°Ñ Ð¸ÑаÑÑи вÑд Ð½ÐµÐ±Ð°Ð¶Ð°Ð½Ð¸Ñ Ð²ÑÑавок HTML. hidden- Ðоли вÑÑановлено
true, ÑобиÑÑ Ñе Ñаме, Ñо й CSSdisplay:none.
DOM вÑзли Ñакож маÑÑÑ ÑнÑÑ Ð²Ð»Ð°ÑÑивоÑÑÑ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ вÑд ÑÑ
клаÑÑ. ÐапÑиклад, <input> елеменÑи (HTMLInputElement) пÑдÑÑимÑÑÑÑ value, type, ÑÐ¾Ð´Ñ Ñк елеменÑи <a> (HTMLAnchorElement) пÑдÑÑимÑÑÑÑ href Ñа Ñн. ÐÑлÑÑÑÑÑÑ ÑÑандаÑÑниÑ
аÑÑибÑÑÑв HTML маÑÑÑ Ð²ÑдповÑÐ´Ð½Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ.
Ðднак аÑÑибÑÑи HTML Ñа влаÑÑивоÑÑÑ DOM не завжди однаковÑ, Ñк ми побаÑимо Ñ Ð½Ð°ÑÑÑÐ¿Ð½Ð¾Ð¼Ñ ÑоздÑлÑ.
ÐоменÑаÑÑ
<code>, Ð´Ð»Ñ ÐºÑлÑÐºÐ¾Ñ ÑÑдкÑв â обгоÑнÑÑÑ ÑÑ Ñегом<pre>, Ð´Ð»Ñ Ð¿Ð¾Ð½Ð°Ð´ 10 ÑÑдкÑв â викоÑиÑÑовÑйÑе пÑÑоÑниÑÑ (plnkr, jsbin, codepenâ¦)