ТепеÑÑ Ð´Ð°Ð²Ð°Ð¹Ñе более внимаÑелÑно взглÑнем на 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 â клаÑÑ, ÑооÑвеÑÑÑвÑÑÑий ÑекÑÑÑ Ð²Ð½ÑÑÑи ÑлеменÑов. ÐапÑимеÑ,
Helloв<p>Hello</p>. - Comment â клаÑÑ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев. Ðни не оÑобÑажаÑÑÑÑ, но каждÑй комменÑаÑий ÑÑановиÑÑÑ Ñленом DOM.
- Text â клаÑÑ, ÑооÑвеÑÑÑвÑÑÑий ÑекÑÑÑ Ð²Ð½ÑÑÑи ÑлеменÑов. ÐапÑимеÑ,
-
Element â ÑÑо базовÑй клаÑÑ Ð´Ð»Ñ DOM-ÑлеменÑов.
Ðн обеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ Ð½Ð° ÑÑовне ÑлеменÑов:
nextElementSibling,children. Ð Ñакже и меÑÐ¾Ð´Ñ Ð¿Ð¾Ð¸Ñка ÑлеменÑов:getElementsByTagName,querySelector.ÐÑаÑÐ·ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð½Ðµ ÑолÑко HTML, но Ñакже XML и SVG. Таким обÑазом, клаÑÑ
ElementÑлÑÐ¶Ð¸Ñ Ð¾Ñновой Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ ÑпеÑиÑиÑнÑÑ ÐºÐ»Ð°ÑÑов:SVGElement,XmlElement(они нам здеÑÑ Ð½Ðµ нÑжнÑ) иHTMLElement. -
РнаконеÑ, HTMLElement ÑвлÑеÑÑÑ Ð±Ð°Ð·Ð¾Ð²Ñм клаÑÑом Ð´Ð»Ñ Ð²ÑÐµÑ Ð¾ÑÑалÑнÑÑ 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
â¦Ðли Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ пÑоÑÑо пÑивеÑÑи его к ÑÑÑоке:
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. ÐÑ ÑвидиÑе ÑазниÑÑ Ð²Ð¾ вÑеÑ
ÑовÑеменнÑÑ
бÑаÑзеÑаÑ
(кÑоме Firefox, где console.log(elem) и console.dir(elem) вÑводÑÑ Ð¾Ð´Ð½Ð¾ и Ñо же â ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² виде DOM-обÑекÑа).
Ð ÑпеÑиÑикаÑии Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ ÐºÐ»Ð°ÑÑов DOM иÑполÑзÑеÑÑÑ Ð½Ðµ JavaScript, а ÑпеÑиалÑнÑй ÑзÑк Interface description language (IDL), Ñ ÐºÐ¾ÑоÑÑм доÑÑаÑоÑно легко ÑазобÑаÑÑÑÑ.
Ð IDL вÑе ÑвойÑÑва пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ñ Ñказанием иÑ
Ñипов. ÐапÑимеÑ, DOMString, boolean и Ñ.д.
ÐеболÑÑой оÑÑÑвок IDL Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиÑми:
// ÐбÑÑвление HTMLInputElement
// ÐвоеÑоÑие ":" поÑле HTMLInputElement ознаÑаеÑ, ÑÑо он наÑледÑÐµÑ Ð¾Ñ HTMLElement
interface HTMLInputElement: HTMLElement {
// далее идÑÑ ÑвойÑÑва и меÑÐ¾Ð´Ñ ÑлеменÑа <input>
// "DOMString" ознаÑаеÑ, ÑÑо знаÑение ÑвойÑÑва - ÑÑÑока
attribute DOMString accept;
attribute DOMString alt;
attribute DOMString autocomplete;
attribute DOMString value;
// boolean - знаÑиÑ, ÑÑо autofocus Ñ
ÑÐ°Ð½Ð¸Ñ Ð»Ð¾Ð³Ð¸ÑеÑкий Ñип даннÑÑ
(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 => ÑлеменÑ
// и его пеÑвÑй поÑомок...
alert(elem.firstChild.nodeType); // 3 => ÑекÑÑ
// Ð´Ð»Ñ Ð¾Ð±ÑекÑа document знаÑение Ñипа -- 9
alert( document.nodeType ); // 9
</script>
</body>
Ð ÑовÑеменнÑÑ
ÑкÑипÑаÑ
, ÑÑÐ¾Ð±Ñ ÑзнаÑÑ Ñип Ñзла, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ иÑполÑзоваÑÑ Ð¼ÐµÑод instanceof и дÑÑгие ÑпоÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ ÐºÐ»Ð°ÑÑ, но иногда nodeType пÑоÑе иÑполÑзоваÑÑ. ÐÑ Ð½Ðµ можем измениÑÑ Ð·Ð½Ð°Ñение 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
// for document
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 вне завиÑимоÑÑи Ð¾Ñ Ñого, как запиÑан Ñег в HTML <body> или <BoDy>.
Ð XML-Ñежиме ÑегиÑÑÑ ÑÐ¾Ñ ÑанÑеÑÑÑ Â«ÐºÐ°Ðº еÑÑÑ». РнаÑÑоÑÑее вÑÐµÐ¼Ñ XML-Ñежим пÑименÑеÑÑÑ Ñедко.
innerHTML: ÑодеÑжимое ÑлеменÑа
СвойÑÑво innerHTML позволÑÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ HTML-ÑодеÑжимое ÑлеменÑа в виде ÑÑÑоки.
ÐÑ Ñакже можем изменÑÑÑ ÐµÐ³Ð¾. ÐÑо один из ÑамÑÑ Ð¼Ð¾ÑнÑÑ ÑпоÑобов менÑÑÑ ÑодеÑжимое на ÑÑÑаниÑе.
ÐÑÐ¸Ð¼ÐµÑ Ð½Ð¸Ð¶Ðµ показÑÐ²Ð°ÐµÑ ÑодеÑжимое document.body, а заÑем полноÑÑÑÑ Ð·Ð°Ð¼ÐµÐ½ÑÐµÑ ÐµÐ³Ð¾:
<body>
<p>ÐаÑагÑаÑ</p>
<div>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> Ñ ÑекÑÑом, введÑннÑм полÑзоваÑелем, Ñо ÑекÑÑ Ð±ÑÐ´ÐµÑ ÑдалÑн. Ð Ñ.д.
Ð ÑÑаÑÑÑÑ, еÑÑÑ Ð¸ дÑÑгие ÑпоÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ ÑодеÑжимое, не иÑполÑзÑÑÑие 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 не изменÑÐµÑ ÑлеменÑ. ÐмеÑÑо ÑÑого ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð·Ð°Ð¼ÐµÐ½ÑеÑÑÑ Ñеликом во внеÑнем конÑекÑÑе.
Ðа, звÑÑÐ¸Ñ ÑÑÑанно, и ÑÑо дейÑÑвиÑелÑно необÑÑно, поÑÑÐ¾Ð¼Ñ Ð·Ð´ÐµÑÑ Ð¼Ñ Ð¸ оÑмеÑаем ÑÑо оÑобо.
РаÑÑмоÑÑим пÑимеÑ:
<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>. Ðо внеÑнем докÑменÑе Ð¼Ñ Ð²Ð¸Ð´Ð¸Ð¼ новое ÑодеÑжимое вмеÑÑо <div>. Ðо, как видно в ÑÑÑоке (**), ÑÑаÑÐ°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ div оÑÑалаÑÑ Ð¿Ñежней!
ÐÑо поÑомÑ, ÑÑо иÑполÑзование outerHTML не изменÑÐµÑ DOM-ÑлеменÑ, а ÑдалÑÐµÑ ÐµÐ³Ð¾ из внеÑнего конÑекÑÑа и вÑÑавлÑÐµÑ Ð²Ð¼ÐµÑÑо него новÑй HTML-код.
То еÑÑÑ, пÑи div.outerHTML=... пÑоизоÑло ÑледÑÑÑее:
divбÑл ÑдалÑн из докÑменÑа.- ÐмеÑÑо него бÑл вÑÑавлен дÑÑгой HTML
<p>ÐовÑй ÑлеменÑ</p>. - Ð
divоÑÑалоÑÑ ÑÑаÑое знаÑение. ÐовÑй HTML не ÑÐ¾Ñ ÑанÑн ни в какой пеÑеменной.
ÐдеÑÑ Ð»ÐµÐ³ÐºÐ¾ ÑделаÑÑ Ð¾ÑибкÑ: замениÑÑ div.outerHTML, а поÑом пÑодолжиÑÑ ÑабоÑаÑÑ Ñ div, как бÑдÑо Ñам новое ÑодеÑжимое. Ðо ÑÑо не Ñак. Ðодобное веÑно Ð´Ð»Ñ innerHTML, но не Ð´Ð»Ñ outerHTML.
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ пиÑаÑÑ Ð² elem.outerHTML, но надо имеÑÑ Ð² видÑ, ÑÑо ÑÑо не менÑÐµÑ ÑлеменÑ, в коÑоÑÑй Ð¼Ñ Ð¿Ð¸Ñем. ÐмеÑÑо ÑÑого ÑоздаÑÑÑÑ Ð½Ð¾Ð²Ñй HTML на его меÑÑе. ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ полÑÑиÑÑ ÑÑÑлки на новÑе ÑлеменÑÑ, обÑаÑивÑиÑÑ Ðº 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>ÐобÑо пожаловаÑÑ, Admin!</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:
<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»
ÐÑÑибÑÑ Ð¸ DOM-ÑвойÑÑво «hidden» ÑказÑÐ²Ð°ÐµÑ Ð½Ð° Ñо, видим ли Ð¼Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð»Ð¸ неÑ.
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ иÑполÑзоваÑÑ ÐµÐ³Ð¾ в 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="знаÑение">
<script>
alert(elem.type); // "text"
alert(elem.id); // "elem"
alert(elem.value); // знаÑение
</script>
ÐолÑÑинÑÑво ÑÑандаÑÑнÑÑ HTML-аÑÑибÑÑов имеÑÑ ÑооÑвеÑÑÑвÑÑÑее DOM-ÑвойÑÑво, и Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ полÑÑиÑÑ Ðº Ð½ÐµÐ¼Ñ Ð´Ð¾ÑÑÑп.
ÐÑли Ð¼Ñ Ñ
оÑим ÑзнаÑÑ Ð¿Ð¾Ð»Ð½Ñй ÑпиÑок поддеÑживаемÑÑ
ÑвойÑÑв Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ клаÑÑа, можно найÑи иÑ
в ÑпеÑиÑикаÑии. ÐапÑимеÑ, клаÑÑ HTMLInputElement опиÑÑваеÑÑÑ Ð·Ð´ÐµÑÑ: https://html.spec.whatwg.org/#htmlinputelement.
ÐÑли же нам нÑжно бÑÑÑÑо ÑÑо-либо ÑзнаÑÑ Ð¸Ð»Ð¸ Ð½Ð°Ñ Ð¸Ð½ÑеÑеÑÑÐµÑ ÑпеÑиÑика опÑеделÑнного бÑаÑзеÑа â Ð¼Ñ Ð²Ñегда можем вÑвеÑÑи ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² конÑолÑ, иÑполÑзÑÑ console.dir(elem), и пÑоÑиÑаÑÑ Ð²Ñе ÑвойÑÑва. Ðли иÑÑледоваÑÑ Â«ÑвойÑÑва DOM» во вкладке Elements бÑаÑзеÑнÑÑ
инÑÑÑÑменÑов ÑазÑабоÑÑика.
ÐÑого
ÐаждÑй DOM-Ñзел пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ Ð¾Ð¿ÑеделÑÐ½Ð½Ð¾Ð¼Ñ ÐºÐ»Ð°ÑÑÑ. ÐлаÑÑÑ ÑоÑмиÑÑÑÑ Ð¸ÐµÑаÑÑ Ð¸Ñ. ÐеÑÑ Ð½Ð°Ð±Ð¾Ñ ÑвойÑÑв и меÑодов ÑвлÑеÑÑÑ ÑезÑлÑÑаÑом наÑледованиÑ.
ÐлавнÑе ÑвойÑÑва DOM-Ñзла:
nodeType- СвойÑÑво
nodeTypeпозволÑÐµÑ ÑзнаÑÑ Ñип DOM-Ñзла. Ðго знаÑение â ÑиÑловое:1Ð´Ð»Ñ ÑлеменÑов,3Ð´Ð»Ñ ÑекÑÑовÑÑ Ñзлов, и Ñ.д. ТолÑко Ð´Ð»Ñ ÑÑениÑ. nodeName/tagName- ÐÐ»Ñ ÑлеменÑов ÑÑо ÑвойÑÑво возвÑаÑÐ°ÐµÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ñега (запиÑÑваеÑÑÑ Ð² веÑÑ
нем ÑегиÑÑÑе, за иÑклÑÑением XML-Ñежима). ÐÐ»Ñ Ñзлов-неÑлеменÑов
nodeNameопиÑÑваеÑ, ÑÑо ÑÑо за Ñзел. ТолÑко Ð´Ð»Ñ ÑÑениÑ. innerHTML- ÐнÑÑÑеннее HTML-ÑодеÑжимое Ñзла-ÑлеменÑа. Ðожно изменÑÑÑ.
outerHTML- ÐолнÑй HTML Ñзла-ÑлеменÑа. ÐапиÑÑ Ð²
elem.outerHTMLне менÑеÑelem. ÐмеÑÑо ÑÑого она заменÑÐµÑ ÐµÐ³Ð¾ во внеÑнем конÑекÑÑе. nodeValue/data- СодеÑжимое Ñзла-неÑлеменÑа (ÑекÑÑ, комменÑаÑий). ÐÑи ÑвойÑÑва пÑакÑиÑеÑки одинаковÑе, обÑÑно Ð¼Ñ Ð¸ÑполÑзÑем
data. Ðожно изменÑÑÑ. textContent- ТекÑÑ Ð²Ð½ÑÑÑи ÑлеменÑа: HTML за вÑÑеÑом вÑеÑ
<Ñегов>. ÐапиÑÑ Ð² него помеÑÐ°ÐµÑ ÑекÑÑ Ð² ÑлеменÑ, пÑи ÑÑом вÑе ÑпеÑиалÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¸ Ñеги инÑеÑпÑеÑиÑÑÑÑÑÑ ÐºÐ°Ðº ÑекÑÑ. Ðожно иÑполÑзоваÑÑ Ð´Ð»Ñ Ð·Ð°ÑиÑÑ Ð¾Ñ Ð²ÑÑавки пÑоизволÑного HTML кода. hidden- Ðогда знаÑение ÑÑÑановлено в
true, Ð´ÐµÐ»Ð°ÐµÑ Ñо же Ñамое, ÑÑо и CSSdisplay:none.
РзавиÑимоÑÑи Ð¾Ñ Ñвоего клаÑÑа DOM-ÑÐ·Ð»Ñ Ð¸Ð¼ÐµÑÑ Ð¸ дÑÑгие ÑвойÑÑва. ÐапÑÐ¸Ð¼ÐµÑ Ñ ÑлеменÑов <input> (HTMLInputElement) еÑÑÑ ÑвойÑÑва value, type, Ñ ÑлеменÑов <a> (HTMLAnchorElement) еÑÑÑ href и Ñ.д. ÐолÑÑинÑÑво ÑÑандаÑÑнÑÑ
HTML-аÑÑибÑÑов имеÑÑ ÑооÑвеÑÑÑвÑÑÑие ÑвойÑÑва DOM.
ÐпÑоÑем, HTML-аÑÑибÑÑÑ Ð¸ ÑвойÑÑва DOM не вÑегда одинаковÑ, Ð¼Ñ Ñвидим ÑÑо в ÑледÑÑÑей главе.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)