Ø¯Ø¹ÙØ§ ÙÙÙÙ ÙØ¸Ø±Ø© Ø£ÙØ«Ø± تع٠ÙÙØ§ عÙÙ Ø¹ÙØ¯ DOM.
ÙÙ ÙØ°Ø§ اÙÙØµÙ Ø Ø³ÙØ±Ù اÙÙ Ø²ÙØ¯ ع٠٠اÙÙØªÙا ÙÙØªØ¹ÙÙ Ø®ØµØ§Ø¦ØµÙØ§ Ø§ÙØ£Ùثر Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ§.
ÙØ¦Ø§Øª Ø¹ÙØ¯Ø© DOM
ÙØ¯ ØªØØªÙÙ Ø¹ÙØ¯ DOM اÙÙ
ختÙÙØ© عÙ٠خصائص Ù
ختÙÙØ©. عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø Ø¹ÙØ¯Ø© Ø¹ÙØµØ± Ù
ÙØ§Ø¨ÙØ© ÙÙØ¹ÙاÙ
Ø© <a> ÙÙØ§ خصائص Ù
رتبطة Ø¨Ø§ÙØ§Ø±ØªØ¨Ø§Ø· Ø ÙØ§ÙØ¹ÙØ¯Ø© اÙÙ
ÙØ§Ø¨ÙØ© ÙÙ <input> ÙÙØ§ خصائص تتعÙÙ Ø¨Ø§ÙØ¥Ø¯Ø®Ø§Ù ÙÙ
ا Ø¥Ù٠ذÙÙ. Ø§ÙØ¹Ùد اÙÙØµÙØ© ÙÙØ³Øª Ù
Ø«Ù Ø¹ÙØ¯ Ø§ÙØ¹Ùصر. ÙÙÙÙ ÙÙØ§Ù Ø£ÙØ¶Ùا خصائص ÙØ·Ø±Ù Ù
Ø´ØªØ±ÙØ© بÙÙÙØ§ Ø ÙØ£Ù جÙ
ÙØ¹ ÙØ¦Ø§Øª Ø¹ÙØ¯ DOM تشÙÙ ØªØ³ÙØ³ÙÙØ§ ÙØ±Ù
ÙÙØ§ ÙØ§ØØ¯Ùا.
ØªÙØªÙ Ù ÙÙ Ø¹ÙØ¯Ø© DOM Ø¥Ù٠اÙÙØ¦Ø© اÙÙ Ø¶Ù ÙØ© اÙÙ ÙØ§Ø¨ÙØ©.
جذر Ø§ÙØªØ³Ùس٠اÙÙØ±Ù Ù ÙÙ [EventTarget] (https://dom.spec.whatwg.org/#eventtarget) Ø Ø§ÙÙ ÙØ±ÙØ« Ø¨ÙØ§Ø³Ø·Ø© [Node] (http://dom.spec.whatwg.org/#interface-node ) Ø ÙØªØ±Ø« Ø§ÙØ¹Ùد Ø§ÙØ£Ø®Ø±Ù Ù ÙÙ.
ÙØ°Ù ÙÙ Ø§ÙØµÙرة ÙØ§ÙØªÙØ³Ùرات Ø§ÙØªÙ ÙØ¬Ø¨ Ø§ØªØ¨Ø§Ø¹ÙØ§:
اÙclasses ÙÙ:
- [EventTarget] (https://dom.spec.whatwg.org/#eventtarget) â ÙÙ ÙØ¦Ø© Ø§ÙØ¬Ø°Ø± âØ§Ù٠جردةâ. ÙØ§ ÙØªÙ Ø¥ÙØ´Ø§Ø¡ ÙØ§Ø¦Ùات ÙØ°Ù اÙÙØ¦Ø© Ø£Ø¨Ø¯ÙØ§. Ø¥Ù٠ب٠ثابة ÙØ§Ø¹Ø¯Ø© Ø Ø¨ØÙØ« ØªØ¯Ø¹Ù Ø¬Ù ÙØ¹ Ø¹ÙØ¯ DOM ٠ا ÙØ³Ù Ù âØ§ÙØ£ØØ¯Ø§Ø«â Ø ÙØ³ÙØ¯Ø±Ø³ÙØ§ ÙØ§ØÙÙØ§.
- [Node] (http://dom.spec.whatwg.org/#interface-node) â ÙÙ Ø£ÙØ¶Ùا ÙØ¦Ø© âÙ
Ø¬Ø±Ø¯Ø©â Ø تعÙ
Ù ÙÙØ§Ø¹Ø¯Ø© ÙØ¹Ùد DOM. ÙÙÙØ± ÙØ¸Ø§Ø¦Ù Ø§ÙØ´Ø¬Ø±Ø© Ø§ÙØ£Ø³Ø§Ø³ÙØ©:
motherNodeÙnextSiblingÙchildNodesÙ٠ا Ø¥Ù٠ذÙÙ (ÙÙ٠عبارة Ø¹Ù ØØ±ÙÙ). ÙØ§ ÙØªÙ Ø¥ÙØ´Ø§Ø¡ ÙØ§Ø¦Ùات ÙØ¦Ø© âØ§ÙØ¹Ùدةâ Ù Ø·ÙÙÙØ§. ÙÙÙÙ ÙÙØ§Ù ÙØ¦Ø§Øª Ø¹ÙØ¯Ø© Ù ØØ¯Ø¯Ø© ترث Ù ÙÙ Ø ÙÙÙ:TextÙÙØ¹Ùد اÙÙØµÙØ© ÙElementÙØ¹Ùد Ø§ÙØ¹Ùاصر ÙØ§ÙÙ Ø²ÙØ¯ Ù Ù Ø§ÙØ£ÙÙØ§Ø¹ Ø§ÙØºØ±Ùبة Ù Ø«ÙCommentÙØ¹Ùد Ø§ÙØªØ¹ÙÙÙ. - [Element] (http://dom.spec.whatwg.org/#interface-element) â ÙÙ ÙØ¦Ø© Ø£Ø³Ø§Ø³ÙØ© ÙØ¹Ùاصر DOM. ÙÙÙØ± Ø§ÙØªÙÙ٠عÙÙ Ù
ستÙÙ Ø§ÙØ¹Ùصر Ù
Ø«Ù
nextElementSiblingÙchildrenÙØ·Ø±Ù Ø§ÙØ¨ØØ« Ù Ø«ÙgetElementsByTagNameÙquerySelector. ÙØ§ ÙØ¯Ø¹Ù اÙÙ ØªØµÙØ HTML ÙØØ³Ø¨ Ø Ø¨Ù ÙØ¯Ø¹Ù Ø£ÙØ¶Ùا XML Ù SVG. ØªØ¹Ù Ù ÙØ¦Ø©ElementÙÙØ§Ø¹Ø¯Ø© ÙÙØ¦Ø§Øª Ø£ÙØ«Ø± ØªØØ¯ÙØ¯ÙØ§:SVGElementÙXMLElementÙHTMLElement. - [HTMLElement] (https://html.spec.whatwg.org/multipage/dom.html#htmlelement) â Ø£Ø®ÙØ±ÙØ§ Ù٠اÙÙØµÙ Ø§ÙØ£Ø³Ø§Ø³Ù ÙØ¬Ù
ÙØ¹ Ø¹ÙØ§ØµØ± HTML. ÙØªÙ
ØªÙØ±ÙØ«Ù Ø¨ÙØ§Ø³Ø·Ø© Ø¹ÙØ§ØµØ± HTML Ù
ØØ¯Ø¯Ø©:
    â [HTMLInputElement] (https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement) â ÙØ¦Ø© Ø¹ÙØ§ØµØ±
<input>Ø Â Â Â Â â [HTMLBodyElement] (https://html.spec.whatwg.org/multipage/semantics.html#htmlbodyelement) â ÙØ¦Ø© Ø¹ÙØ§ØµØ±<body>Ø Â Â Â Â â [HTMLAnchorElement] (https://html.spec.whatwg.org/multipage/semantics.html#htmlanchorelement) â ÙØ¦Ø© Ø¹ÙØ§ØµØ± "` Ø Â Â Â Â â ⦠ÙÙÙØ°Ø§ Ø ÙÙ Ø¹ÙØ§Ù Ø© ÙÙØ§ ÙØ¦Ø© خاصة Ø¨ÙØ§ ÙØ¯ تÙÙØ± خصائص ÙØ£Ø³Ø§ÙÙØ¨ ٠عÙÙØ©.
ÙØ°ÙÙ Ø ÙØ¥Ù اÙÙ Ø¬Ù ÙØ¹Ø© اÙÙØ§Ù ÙØ© Ù Ù Ø§ÙØ®ØµØ§Ø¦Øµ ÙØ§ÙأساÙÙØ¨ ÙØ¹Ùدة ٠عÙÙØ© ØªØ£ØªÙ ÙØªÙجة اÙÙ ÙØ±Ø§Ø«.
عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø ÙÙÙÙØ± ÙÙ ÙØ§Ø¦Ù DOM ÙØ¹Ùصر <input>. ÙÙÙ ØªÙØªÙ
٠إÙÙ ÙØ¦Ø© [HTMLInputElement] (https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement).
ÙØØµÙ Ø¹Ù٠خصائص ÙØ£Ø³Ø§ÙÙØ¨ ØªØ±Ø§ÙØ¨ (٠درج ÙÙ ØªØ±ØªÙØ¨ اÙÙ ÙØ±Ø§Ø«):
- âHTMLInputElementâ â ØªÙÙØ± ÙØ°Ù اÙÙØ¦Ø© خصائص خاصة Ø¨Ø§ÙØ¥Ø¯Ø®Ø§Ù Ø
HTMLElementâ ÙÙÙØ± Ø·Ø±Ù Ø¹ÙØµØ± HTML Ø§ÙØ´Ø§Ø¦Ø¹Ø© (ÙØ§Ùرسائ٠/ اÙÙ ØØ¯Ø¯Ø§Øª) Ø- âØ§ÙØ¹Ùصرâ â ÙÙÙØ± Ø·Ø±Ù Ø§ÙØ¹Ùاصر Ø§ÙØ¹Ø§Ù Ø© Ø
Ø§ÙØ¹ÙØ¯Ø©â ØªÙÙØ± خصائص Ø¹ÙØ¯Ø© DOM Ø§ÙØ´Ø§Ø¦Ø¹Ø© ØEventTargetâ ÙÙØ¯Ù Ø§ÙØ¯Ø¹Ù ÙÙØ£ØØ¯Ø§Ø« (Ø§ÙØªÙ Ø³ÙØªÙ ØªØºØ·ÙØªÙا) Ø- â¦ ÙØ£Ø®ÙØ±ÙØ§ ÙØ±Ø« Ù
Ù
ObjectØ ÙØ°Ù٠تتÙÙØ± Ø£ÙØ¶Ùا طرÙ" اÙÙØ§Ø¦Ù Ø§ÙØ¹Ø§Ø¯Ù "Ù Ø«ÙhasOwnProperty.
ÙØ±Ø¤ÙØ© اسÙ
ÙØ¦Ø© Ø¹ÙØ¯Ø© DOM Ø ÙÙ
ÙÙÙØ§ Ø£Ù ÙØªØ°Ùر أ٠اÙÙØ§Ø¦Ù عادة Ù
ا ÙÙÙÙ ÙÙ Ø®Ø§ØµÙØ© اÙÙ
ÙØ´Ø¦. ÙÙÙ ØªØ´ÙØ± Ø¥ÙÙ Ù
ÙÙØ´Ø¦ Ø§ÙØµÙÙ Ø Ù buildor.name Ù٠اسÙ
Ù:
alert(document.body.constructor.name); // HTMLBodyElement
â¦Or we can just toString it:
alert(document.body); // [object HTMLBodyElement]
We also can use instanceof to check the inheritance:
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 ÙÙ
ا Ø¥Ù٠ذÙÙ.
``smart header=" console.dir (elem)Ù
ÙØ§Ø¨Ùconsole.log (elem) "" تدعÙ
Ù
عظÙ
اÙÙ
ØªØµÙØØ§Øª Ø£Ù
رÙÙ ÙÙ Ø£Ø¯ÙØ§Øª اÙÙ
Ø·ÙØ±ÙÙ Ø§ÙØ®Ø§ØµØ© بÙÙ
:console.logÙ console.dir`. ÙØ®Ø±Ø¬ÙÙ ØØ¬Ø¬ÙÙ
Ø¥ÙÙ ÙØØ¯Ø© Ø§ÙØªØÙÙ
. باÙÙØ³Ø¨Ø© ÙÙØ§Ø¦Ùات JavaScript Ø ØªÙÙÙ
ÙØ°Ù Ø§ÙØ£ÙاÙ
ر بÙÙØ³ Ø§ÙØ´ÙØ¡.
ÙÙÙ٠باÙÙØ³Ø¨Ø© ÙØ¹Ùاصر DOM ÙÙ٠٠ختÙÙØ©:
- ÙÙØ¸Ùر
console.log (elem)Ø¹ÙØµØ± شجرة DOM. - ÙÙØ¸Ùر
console.dir (elem)Ø§ÙØ¹Ùصر ÙØ¹Ùصر DOM Ø Ø¬ÙØ¯ ÙØ§Ø³ØªÙشا٠خصائصÙ.
جرب٠عÙÙ document.body.
````smart header="IDL in the spec"
Ù٠اÙÙ
ÙØ§ØµÙات Ø ÙØ§ ÙØªÙ
ÙØµÙ ÙØ¦Ø§Øª DOM باستخداÙ
JavaScript Ø ÙÙÙÙ [ÙØºØ© ÙØµÙ ÙØ§Ø¬ÙØ© خاصة] (https://en.wikipedia.org/wiki/Interface_description_language) (IDL) Ø ÙØ³ÙÙ ÙÙÙ
ÙØ§ عادةÙ.
ÙÙ IDL Ø ÙØªÙ
Ø¥ÙØØ§Ù Ø¬Ù
ÙØ¹ Ø§ÙØ®ØµØ§Ø¦Øµ بأÙÙØ§Ø¹Ùا. عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø "DOMString" Ù "boolean" ÙÙ
ا Ø¥Ù٠ذÙÙ.
Ø¥ÙÙÙ Ù
ÙØªØ·Ù Ù
ÙÙ Ø Ù
ع Ø§ÙØªØ¹ÙÙÙØ§Øª:
```js
// تعرÙÙ HTMLInputElement
*! *
// اÙÙÙØ·ØªÙÙ ":" تعÙ٠أ٠HTMLInputElement ÙØ±Ø« Ù
Ù HTMLElement
* /! *
ÙØ§Ø¬ÙØ© HTMLInputElement: HTMLElement {
  // here Ø§ÙØªÙ٠إÙ٠خصائص ÙØ£Ø³Ø§ÙÙØ¨ Ø¹ÙØ§ØµØ± <input>
*! *
  // "DOMString" ÙØ¹Ù٠أ٠ÙÙÙ
Ø© Ø§ÙØ®Ø§ØµÙØ© ÙÙ Ø³ÙØ³ÙØ©
* /! *
Â Â Ø§ÙØ³Ù
Ø© DOMString ØªÙØ¨Ù Ø
  سÙ
Ø© DOMString alt Ø
  سÙ
Ø© Ø§ÙØ¥ÙÙ
Ø§Ù Ø§ÙØªÙÙØ§Ø¦Ù ÙÙ DOMString Ø
  ÙÙÙ
Ø© DOMString Ø
*! *
  // Ø®Ø§ØµÙØ© اÙÙÙÙ
Ø© اÙÙ
ÙØ·ÙÙØ© (ØµÙØ§Ø¨ / خطأ)
Â Â Ø®Ø§ØµÙØ© Ø§ÙØªØ±ÙÙØ² Ø§ÙØªÙÙØ§Ø¦Ù اÙÙ
ÙØ·ÙÙ Ø
* /! *
  ...
*! *
  // now the method: ÙØ¹ÙÙ "void" Ø£Ù Ø§ÙØ·Ø±ÙÙØ© ÙØ§ ØªÙØ±Ø¬Ø¹ Ø£Ù ÙÙÙ
Ø©
*/!*
void select();
...
}
## Ø®Ø§ØµÙØ© "nodeType"
تÙÙØ± Ø®Ø§ØµÙØ© `nodeType` طرÙÙØ© أخرÙ" ÙØ¯ÙÙ
Ø© Ø§ÙØ·Ø±Ø§Ø² "ÙÙØØµÙ٠عÙÙ" ÙÙØ¹ "Ø¹ÙØ¯Ø© DOM.
ÙÙØ§ ÙÙÙ
Ø© رÙÙ
ÙØ©:
- `elem.nodeType == 1` ÙØ¹Ùد Ø§ÙØ¹Ùاصر Ø
- `elem.nodeType == 3` ÙÙØ¹Ùد اÙÙØµÙØ© Ø
- `elem.nodeType == 9` ÙÙØ§Ø¦Ù اÙÙ
Ø³ØªÙØ¯ Ø
- ÙÙØ§Ù عدد ÙÙÙÙ Ù
٠اÙÙÙÙ
Ø§ÙØ£Ø®Ø±Ù ÙÙ [اÙÙ
ÙØ§ØµÙات] (https://dom.spec.whatwg.org/#node).
عÙ٠سبÙ٠اÙÙ
ثاÙ:
```html run
<body>
<script>
let elem = document.body;
// let's examine what it is?
alert(elem.nodeType); // 1 => element
// and the first child is...
alert(elem.firstChild.nodeType); // 3 => text
// for the document object, the type is 9
alert( document.nodeType ); // 9
</script>
</body>
```
Ù٠اÙÙØµÙص Ø§ÙØØ¯ÙØ«Ø© Ø ÙÙ
ÙÙÙØ§ استخداÙ
"Ù
Ø«ÙÙ" ÙØ§Ùاختبارات Ø§ÙØ£Ø®Ø±Ù اÙÙØ§Ø¦Ù
Ø© عÙ٠اÙÙØµÙ ÙØ±Ø¤ÙØ© ÙÙØ¹ Ø§ÙØ¹Ùدة Ø ÙÙÙÙ Ù٠بعض Ø§ÙØ£ØÙØ§Ù ÙØ¯ ÙÙÙÙ "ÙÙØ¹ Ø§ÙØ¹Ùدة" أبسط. ÙÙ
ÙÙÙØ§ ÙÙØ· ÙØ±Ø§Ø¡Ø© `nodeType` Ø ÙÙÙØ³ تغÙÙØ±Ù.
## Ø§ÙØ¹ÙاÙ
Ø©: nodeName Ù tagName
باÙÙØ¸Ø± Ø¥ÙÙ Ø¹ÙØ¯Ø© DOM Ø ÙÙ
ÙÙÙØ§ ÙØ±Ø§Ø¡Ø© اسÙ
Ø¹ÙØ§Ù
ØªÙØ§ Ù
٠خصائص `nodeName` Ø£Ù` tagName`:
عÙ٠سبÙ٠اÙÙ
ثاÙ:
تشغÙÙ Ø´Ø¨ÙØ¨Ø©
ØªÙØ¨ÙÙ (document.body.nodeName) Ø // Ø§ÙØ¬Ø³Ù
ØªÙØ¨ÙÙ (document.body.tagName) Ø // Ø§ÙØ¬Ø³Ù
``
ÙÙ ÙÙØ§Ù ÙØ±Ù بÙÙ `tagName` Ù` nodeName`Ø
Ø¨Ø§ÙØªØ£ÙÙØ¯ Ø ÙÙØ¹Ùس اÙÙØ±Ù Ù٠أسÙ
ائÙÙ
Ø ÙÙÙÙ Ù٠اÙÙØ§Ùع Ø®ÙÙ ÙÙÙÙØ§Ù.
- Ø®Ø§ØµÙØ© `tagName` Ù
ÙØ¬Ùدة ÙÙØ· ÙØ¹Ùد` Ø§ÙØ¹Ùصر`.
- ÙÙØ¹Ø±ÙÙ "nodeName" ÙØ£Ù "Ø¹ÙØ¯Ø©":
    - ÙÙØ¹Ùاصر ÙØ¹ÙÙ ÙÙØ³ "tagName".
    - ÙØ£ÙÙØ§Ø¹ Ø§ÙØ¹Ùد Ø§ÙØ£Ø®Ø±Ù (ÙØµ Ø ØªØ¹ÙÙÙ Ø Ø¥ÙØ®.) ØªØØªÙ٠عÙÙ Ø³ÙØ³ÙØ© بÙÙØ¹ Ø§ÙØ¹Ùدة.
بÙ
عÙ٠آخر Ø ÙØ§ ÙØªÙ
دعÙ
`tagName` Ø¥ÙØ§ Ø¨Ø¹ÙØ¯ Ø§ÙØ¹Ùاصر (ÙØ£ÙÙØ§ ØªÙØ´Ø£ Ù
Ù ÙØ¦Ø©` Element`) Ø Ø¨ÙÙÙ
ا ÙÙ
ÙÙ ÙÙ `nodeName` Ø£Ù ÙÙÙÙ Ø´ÙØ¦Ùا ع٠أÙÙØ§Ø¹ Ø§ÙØ¹Ùد Ø§ÙØ£Ø®Ø±Ù.
عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø Ø¯Ø¹ÙØ§ ÙÙØ§Ø±Ù `tagName` Ù` nodeName` ÙÙ `اÙÙ
Ø³ØªÙØ¯` ÙØ¹Ùدة Ø§ÙØªØ¹ÙÙÙ:
```html run
<body><!-- comment -->
<script>
// for comment
alert( document.body.firstChild.tagName ); // undefined (not an element)
alert( document.body.firstChild.nodeName ); // #comment
// for document
alert( document.tagName ); // undefined (not an element)
alert( document.nodeName ); // #document
</script>
</body>
```
إذا تعاÙ
ÙÙØ§ ÙÙØ· Ù
ع Ø§ÙØ¹Ùاصر Ø ÙÙÙ
ÙÙÙØ§ استخداÙ
ÙÙ Ù
Ù "tagName" Ù "nodeName" - ÙÙØ§ ÙØ±Ù.
"` `عÙÙØ§Ù Ù
ختصر ÙØ°ÙÙ=" اسÙ
Ø§ÙØ¹ÙاÙ
Ø© دائÙ
ÙØ§ Ù
ا ÙÙÙÙ Ø¨ØØ±ÙÙ ÙØ¨Ùرة Ø¥ÙØ§ ÙÙ ÙØ¶Ø¹ XML "
ÙØØªÙ٠اÙÙ
ØªØµÙØ عÙÙ ÙØ¶Ø¹ÙÙ ÙÙ
Ø¹Ø§ÙØ¬Ø© اÙÙ
Ø³ØªÙØ¯Ø§Øª: HTML Ù XML. عادة Ù
ا ÙØªÙ
استخداÙ
ÙØ¶Ø¹ HTML ÙØµÙØØ§Øª اÙÙÙØ¨. ÙØªÙ
تÙ
ÙÙÙ ÙØ¶Ø¹ XML Ø¹ÙØ¯Ù
ا ÙØªÙÙ٠اÙÙ
ØªØµÙØ Ù
Ø³ØªÙØ¯ XML Ù
ع Ø§ÙØ±Ø£Ø³: `Content-Type: application / xml + xhtml`.
ÙÙ ÙØ¶Ø¹ HTML Ø ÙØªÙ
دائÙ
ÙØ§ تÙ
ÙÙØ² "tagName / nodeName" Ø¨Ø£ØØ±Ù ÙØ¨Ùرة: Ø¥ÙÙ `BODY` Ø¥Ù
ا ÙÙ` <body> `Ø£Ù` <BoDy> `.
ÙÙ ÙØ¶Ø¹ XML ÙØªÙ
Ø§ÙØ§ØØªÙاظ Ø¨Ø§ÙØØ§ÙØ© "ÙÙ
ا ÙÙ". Ù٠اÙÙÙØª Ø§ÙØØ§Ø¶Ø± ÙØ§Ø¯Ø±Ø§ Ù
ا ÙØ³ØªØ®Ø¯Ù
ÙØ¶Ø¹ XML.
``
## innerHTML: اÙÙ
ØØªÙÙØ§Øª
The [innerHTML](https://w3c.github.io/DOM-Parsing/#the-innerhtml-mixin) property allows to get the HTML inside the element as a string.
ÙÙ
ÙÙÙØ§ Ø£ÙØ¶Ùا تعدÙÙÙ. ÙØ°Ø§ ÙÙÙ ÙØ§ØØ¯Ø© Ù
٠أÙÙÙ Ø§ÙØ·Ø±Ù ÙØªØºÙÙØ± Ø§ÙØµÙØØ©.
ÙÙØ¶Ø اÙÙ
ثا٠Ù
ØØªÙÙØ§Øª `document.body` Ø«Ù
ÙØ³ØªØ¨Ø¯ÙÙØ§ باÙÙØ§Ù
Ù:
```html run
<body>
<p>A paragraph</p>
<div>A div</div>
<script>
alert( document.body.innerHTML ); // read the current contents
document.body.innerHTML = 'The new BODY!'; // replace it
</script>
</body>
```
ÙÙ
ÙÙÙØ§ Ù
ØØ§ÙÙØ© إدراج HTML ØºÙØ± ØµØ§ÙØ Ø Ø³ÙÙÙÙ
اÙÙ
ØªØµÙØ Ø¨Ø¥ØµÙØ§Ø Ø£Ø®Ø·Ø§Ø¡ÙØ§:
```html run
<body>
<script>
document.body.innerHTML = '<b>test'; // forgot to close the tag
alert( document.body.innerHTML ); // <b>test</b> (fixed)
</script>
</body>
```
```عÙÙØ§Ù Ù
ختصر= "Ø§ÙØ¨Ø±Ø§Ù
ج اÙÙØµÙØ© ÙØ§ تÙÙØ°"
إذا أدرج `innerHTML` Ø¹ÙØ§Ù
Ø©` <script> `Ù٠اÙÙ
Ø³ØªÙØ¯ - ÙØµØ¨Ø Ø¬Ø²Ø¡ÙØ§ Ù
Ù HTML Ø ÙÙÙÙ ÙØ§ ÙØªÙ
تÙÙÙØ°Ù.
```
### Ø§ØØ°Ø±: "innerHTML + =" ÙÙÙÙ
Ø¨Ø§Ø³ØªØ¨Ø¯Ø§Ù ÙØ§Ù
Ù
ÙÙ
ÙÙÙØ§ Ø¥ÙØØ§Ù HTML Ø¨Ø¹ÙØµØ± باستخداÙ
`elem.innerHTML + =" more html "`.
Ù
Ø«ÙÙ:
```js
chatDiv.innerHTML += "<div>Hello<img src='smile.gif'/> !</div>";
chatDiv.innerHTML += "How goes?";
```
ÙÙÙÙ ÙØ¬Ø¨ Ø£Ù ÙÙÙÙ ØØ°Ø±ÙÙ ÙÙØºØ§ÙØ© بشأ٠اÙÙÙØ§Ù
بذÙÙ Ø ÙØ£Ù Ù
ا ÙØØ¯Ø« ÙÙ * ÙÙØ³ * Ø¥Ø¶Ø§ÙØ© Ø ÙÙÙÙ Ø§Ø³ØªØ¨Ø¯Ø§Ù ÙØ§Ù
Ù.
Ù
٠اÙÙØ§ØÙØ© اÙÙÙÙØ© Ø ÙÙØ¹Ù ÙØ°Ø§Ù Ø§ÙØ®Ø·Ø§Ù ÙÙØ³ Ø§ÙØ´ÙØ¡:
```js
elem.innerHTML += "...";
// is a shorter way to write:
elem.innerHTML = elem.innerHTML + "..."
```
بÙ
عÙ٠آخر Ø ÙÙÙÙ
`innerHTML + =` بذÙÙ:
1. تتÙ
Ø¥Ø²Ø§ÙØ© اÙÙ
ØØªÙÙØ§Øª اÙÙØ¯ÙÙ
Ø©.
2. Ø¨Ø¯ÙØ§Ù Ù
٠ذÙÙ Ø ÙØªÙ
ÙØªØ§Ø¨Ø© "innerHTML" Ø§ÙØ¬Ø¯Ùد (Ø³ÙØ³ÙØ© Ù
٠اÙÙØ¯ÙÙ
ÙØ§ÙØ¬Ø¯ÙØ¯).
** ÙØ¸Ø±Ùا ÙØ£Ù اÙÙ
ØØªÙÙ "خاÙÙ Ù
Ù Ø£Ù Ø´ÙØ¡" ÙØ£Ø¹Ùد ÙØªØ§Ø¨ØªÙ Ù
Ù Ø§ÙØ¨Ø¯Ø§ÙØ© Ø ÙØ³ÙتÙ
إعادة تØÙ
Ù٠جÙ
ÙØ¹ Ø§ÙØµÙر ÙØ§ÙÙ
ÙØ§Ø±Ø¯ Ø§ÙØ£Ø®Ø±Ù **.
ÙÙ Ù
ثا٠`chatDiv` أعÙÙ Ø§ÙØ³Ø·Ø±` chatDiv.innerHTML + = "ÙÙÙ Ø§ÙØØ§ÙØ" `` ÙØ¹Ùد Ø¥ÙØ´Ø§Ø¡ Ù
ØØªÙÙ HTML ÙÙØ¹Ùد تØÙ
ÙÙ `smile.gif` (Ø¢Ù
Ù Ø£Ù ÙØªÙ
تخزÙÙÙ Ù
Ø¤ÙØªÙا). إذا ÙØ§Ù `chatDiv` ÙØØªÙ٠عÙ٠اÙÙØ«Ùر Ù
٠اÙÙØµÙص ÙØ§ÙØµÙØ± Ø§ÙØ£Ø®Ø±Ù Ø ÙØ¥Ù إعادة Ø§ÙØªØÙ
ÙÙ ØªØµØ¨Ø Ù
Ø±Ø¦ÙØ© Ø¨ÙØ¶ÙØ.
ÙÙØ§Ù آثار Ø¬Ø§ÙØ¨ÙØ© Ø£Ø®Ø±Ù Ø£ÙØ¶Ùا. عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø Ø¥Ø°Ø§ تÙ
ØªØØ¯Ùد اÙÙØµ Ø§ÙØØ§Ù٠باÙÙ
Ø§ÙØ³ Ø ÙØ¥Ù Ù
عظÙ
اÙÙ
ØªØµÙØØ§Øª ستزÙÙ Ø§ÙØªØØ¯Ùد Ø¹ÙØ¯ إعادة ÙØªØ§Ø¨Ø© `innerHTML`. ÙØ¥Ø°Ø§ ÙØ§Ù ÙÙØ§Ù "<input>" Ù
ع ÙØµ أدخÙÙ Ø§ÙØ²Ø§Ø¦Ø± Ø ÙØ³ÙتÙ
Ø¥Ø²Ø§ÙØ© اÙÙØµ. ÙÙ
ا Ø¥Ù٠ذÙÙ ÙÙÙÙ
جرا.
ÙØØ³Ù Ø§ÙØØ¸ Ø ÙÙØ§Ù Ø·Ø±Ù Ø£Ø®Ø±Ù ÙØ¥Ø¶Ø§ÙØ© HTML Ø¥ÙÙ Ø¬Ø§ÙØ¨ "innerHTML" Ø ÙØ³ÙØ¯Ø±Ø³ÙØ§ ÙØ±ÙØ¨ÙØ§.
## outerHTML: HTML اÙÙØ§Ù
Ù ÙÙØ¹Ùصر
ØªØØªÙÙ Ø§ÙØ®Ø§ØµÙØ© `outerHTML` عÙÙ HTML اÙÙØ§Ù
Ù ÙÙØ¹Ùصر. ÙØ°Ø§ Ù
ث٠`innerHTML` Ø¨Ø§ÙØ¥Ø¶Ø§ÙØ© Ø¥ÙÙ Ø§ÙØ¹Ùصر ÙÙØ³Ù.
Ø¥ÙÙÙ Ù
ثاÙ:
```html run
<div id="elem">Hello <b>World</b></div>
<script>
alert(elem.outerHTML); // <div id="elem">Hello <b>World</b></div>
</script>
```
** Ø§ØØ°Ø±: عÙÙ Ø¹ÙØ³ "innerHTML" Ø ÙØ§ تؤد٠اÙÙØªØ§Ø¨Ø© Ø¥ÙÙ "outerHTML" Ø¥Ù٠تغÙÙØ± Ø§ÙØ¹Ùصر. Ø¨Ø¯ÙØ§Ù Ù
٠ذÙÙ Ø ÙØªÙ
استبداÙÙ ÙÙ DOM. **
ÙØ¹Ù
Ø ÙØ¨Ø¯Ù ØºØ±ÙØ¨Ùا Ø ÙØºØ±ÙØ¨ÙØ§ Ø ÙÙØ°Ø§ Ø§ÙØ³Ø¨Ø¨ ÙÙÙÙ
بعÙ
Ù Ù
ÙØ§ØØ¸Ø© Ù
ÙÙØµÙØ© عÙÙ ÙÙØ§. Ø¥ÙÙ ÙØ¸Ø±Ø©.
تأÙ
Ù Ù٠اÙÙ
ثاÙ:
```html run
<div>Hello, world!</div>
<script>
let div = document.querySelector('div');
// replace div.outerHTML with <p>...</p>
div.outerHTML = '<p>A new element</p>'; // (*)
// Wow! 'div' is still the same!
alert(div.outerHTML); // <div>Hello, world!</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"). Ø¨Ø¯ÙØ§Ù Ù
٠ذÙÙ Ø ØªØ¶Ø¹ HTML Ø§ÙØ¬Ø¯Ùد ÙÙ Ù
ÙØ§ÙÙ. ÙÙ
ÙÙÙØ§ Ø§ÙØØµÙ٠عÙÙ Ù
راجع ÙÙØ¹Ùاصر Ø§ÙØ¬Ø¯Ùدة ع٠طرÙÙ Ø§ÙØ§Ø³ØªØ¹ÙاÙ
ع٠DOM.
## nodeValue / data: Ù
ØØªÙÙ Ø¹ÙØ¯Ø© اÙÙØµ
Ø®Ø§ØµÙØ© `innerHTML` ØµØ§ÙØØ© ÙØ¹Ùد Ø§ÙØ¹Ùاصر ÙÙØ·.
Ø£ÙÙØ§Ø¹ Ø§ÙØ¹Ùد Ø§ÙØ£Ø®Ø±Ù Ø Ù
Ø«Ù Ø§ÙØ¹Ùد اÙÙØµÙØ© Ø ÙÙØ§ ÙØ¸ÙØ±ÙØ§: خصائص `nodeValue` Ù` data`. ÙØ°Ø§Ù اÙÙÙØ¹Ø§Ù Ù
ØªØ´Ø§Ø¨ÙØ§Ù ØªÙØ±ÙØ¨ÙØ§ ÙÙØ§Ø³ØªØ®Ø¯Ø§Ù
Ø§ÙØ¹Ù
ÙÙ Ø ÙÙØ§ ØªÙØ¬Ø¯ سÙÙ Ø§Ø®ØªÙØ§Ùات Ø·ÙÙÙØ© Ù٠اÙÙ
ÙØ§ØµÙات. ÙØ°Ø§ Ø³ÙØ³ØªØ®Ø¯Ù
"Ø§ÙØ¨ÙØ§ÙØ§Øª" ÙØ£ÙÙØ§ Ø£ÙØµØ±.
Ù
ثا٠عÙÙ ÙØ±Ø§Ø¡Ø© Ù
ØØªÙÙ Ø§ÙØ¹Ùدة اÙÙØµÙØ© ÙØ§ÙتعÙÙÙ:
```html run height="50"
<body>
Hello
<!-- Comment -->
<script>
let text = document.body.firstChild;
alert(text.data); // Hello
let comment = text.nextSibling;
alert(comment.data); // Comment
</script>
</body>
```
باÙÙØ³Ø¨Ø© ÙÙØ¹Ùد اÙÙØµÙØ© Ø ÙÙ
ÙÙÙØ§ تخÙ٠سبب ÙÙØ±Ø§Ø¡ØªÙا أ٠تعدÙÙÙØ§ Ø ÙÙÙÙ ÙÙ
اذا Ø§ÙØªØ¹ÙÙÙØ§ØªØ
Ù٠بعض Ø§ÙØ£ØÙا٠ÙÙÙÙ
اÙÙ
Ø·ÙØ±Ù٠بتضÙ
ÙÙ Ù
عÙÙÙ
ات أ٠تعÙÙÙ
ات ÙØ§Ùب ÙÙ HTML Ø Ù
Ø«Ù ÙØ°Ø§:
```html
<!-- if isAdmin -->
<div>Welcome, Admin!</div>
<!-- /if -->
```
... Ø«Ù
ÙÙ
ÙÙ ÙØ¬Ø§Ùا Ø³ÙØ±Ùبت ÙØ±Ø§Ø¡ØªÙ Ù
Ù Ø®Ø§ØµÙØ© `Ø§ÙØ¨ÙØ§ÙØ§Øª` ÙÙ
Ø¹Ø§ÙØ¬Ø© Ø§ÙØªØ¹ÙÙÙ
ات اÙÙ
ضÙ
ÙØ©.
## textContent: ÙØµ Ø®Ø§ÙØµ
ÙÙÙØ± `textContent` اÙÙØµÙ٠إÙÙ * text * Ø¯Ø§Ø®Ù Ø§ÙØ¹Ùصر: اÙÙØµ ÙÙØ· Ø ÙØ§Ùص جÙ
ÙØ¹` <tags> `.
عÙ٠سبÙ٠اÙÙ
ثاÙ:
```html run
<div id="news">
<h1>Headline!</h1>
<p>Martians attack people!</p>
</div>
<script>
// Headline! Martians attack people!
alert(news.textContent);
</script>
```
ÙÙ
ا ÙØ±Ù Ø ÙØªÙ
إرجاع اÙÙØµ ÙÙØ· Ø ÙÙ
ا Ù٠تÙ
ÙØ·Ø¹ جÙ
ÙØ¹ `<tags>` Ø ÙÙ٠اÙÙØµ ÙÙÙØ§ بÙÙ.
Ù
٠اÙÙØ§ØÙØ© Ø§ÙØ¹Ù
ÙÙØ© Ø ÙØ§Ø¯Ø±Ùا Ù
ا تÙÙÙ ÙÙØ§Ù ØØ§Ø¬Ø© ÙÙØ±Ø§Ø¡Ø© Ù
Ø«Ù ÙØ°Ø§ اÙÙØµ.
** تعد اÙÙØªØ§Ø¨Ø© Ø¥ÙÙ "textContent" Ø£ÙØ«Ø± ÙØ§Ø¦Ø¯Ø© ÙØ£ÙÙØ§ ØªØªÙØ ÙÙ ÙØªØ§Ø¨Ø© اÙÙØµ "بطرÙÙØ© Ø¢Ù
ÙØ©". **
ÙÙÙØªØ±Ø¶ Ø£Ù ÙØ¯ÙÙØ§ Ø³ÙØ³ÙØ© Ø¹Ø´ÙØ§Ø¦ÙØ© Ø Ø¹Ù٠سبÙ٠اÙÙ
ثا٠تÙ
إدخاÙÙØ§ Ù
Ù ÙØ¨Ù Ù
ستخدÙ
Ø ÙÙØ±Ùد Ø¥Ø¸ÙØ§Ø±Ùا.
- باستخداÙ
"innerHTML" Ø Ø³ÙÙÙÙ
بإدراج "ÙÙ HTML" Ø Ù
ع ÙØ§ÙØ© Ø¹ÙØ§Ù
ات HTML.
- Ù
ع "textContent" سÙÙÙÙ
بإدراج "ÙÙØµ" Ø ÙØªÙ
Ø§ÙØªØ¹Ø§Ù
Ù Ù
ع جÙ
ÙØ¹ Ø§ÙØ±Ù
ÙØ² ØØ±ÙÙØ§Ù.
ÙØ§Ø±Ù بÙÙ Ø§ÙØ§Ø«ÙÙÙ:
```html run
<div id="elem1"></div>
<div id="elem2"></div>
<script>
let name = prompt("What's your name?", "<b>Winnie-the-Pooh!</b>");
elem1.innerHTML = name;
elem2.textContent = name;
</script>
```
1. The first `<div>` gets the name "as HTML": all tags become tags, so we see the bold name.
2. The second `<div>` gets the name "as text", so we literally see `<b>Winnie-the-Pooh!</b>`.
ÙÙ Ù
عظÙ
Ø§ÙØØ§ÙØ§Øª Ø ÙØªÙÙØ¹ اÙÙØµ Ù
Ù Ù
ستخدÙ
ÙÙØ±Ùد Ù
عاÙ
ÙØªÙ ÙÙØµ. ÙØ§ ÙØ±Ùد HTML ØºÙØ± Ù
تÙÙØ¹ ÙÙ Ù
ÙÙØ¹Ùا. ÙØ¤Ø¯Ù Ø§ÙØªØ¹ÙÙ٠إÙÙ `textContent` ذÙÙ Ø¨Ø§ÙØ¶Ø¨Ø·.
## Ø®Ø§ØµÙØ© "Ù
Ø®ÙÙØ©"
ØªØØ¯Ø¯ Ø§ÙØ³Ù
Ø© "Ù
Ø®ÙÙ" ÙØ®Ø§ØµÙØ© DOM Ù
ا إذا ÙØ§Ù Ø§ÙØ¹Ùصر Ù
رئÙÙØ§ Ø£Ù
ÙØ§.
We can use it in HTML or assign it using JavaScript, like this:
```html run height="80"
<div>Both divs below are hidden</div>
<div hidden>With the attribute "hidden"</div>
<div id="elem">JavaScript assigned the property "hidden"</div>
<script>
elem.hidden = true;
</script>
```
Ù
٠اÙÙØ§ØÙØ© اÙÙÙÙØ© Ø ÙØ¹Ù
Ù `اÙÙ
Ø®ÙÙ` تÙ
اÙ
ÙØ§ Ù
Ø«Ù` style = "display: none" `. ÙÙÙÙØ§ Ø£ÙØµØ± Ù٠اÙÙØªØ§Ø¨Ø©.
Ø¥ÙÙÙ Ø¹ÙØµØ± ÙØ§Ù
ض:
```html run height=50
<div id="elem">A blinking element</div>
<script>
setInterval(() => elem.hidden = !elem.hidden, 1000);
</script>
```
## اÙÙ
Ø²ÙØ¯ Ù
Ù Ø§ÙØ®ØµØ§Ø¦Øµ
ØªØØªÙÙ Ø¹ÙØ§ØµØ± DOM Ø£ÙØ¶Ùا عÙ٠خصائص إضاÙÙØ© Ø ÙØ§ سÙÙ
ا تÙÙ Ø§ÙØªÙ تعتÙ
د عÙ٠اÙÙØ¦Ø©:
- `اÙÙÙÙ
Ø©` - ÙÙÙ
Ø©` <input> `Ù` <select> `Ù` <textarea>` (`HTMLInputElement`Ø` HTMLSelectElement` ...).
- `href` -" href "ÙÙ` <a href="..."> `(` HTMLAnchorElement`).
- `id` - ÙÙÙ
Ø© Ø§ÙØ³Ù
Ø©" id "Ø ÙØ¬Ù
ÙØ¹ Ø§ÙØ¹Ùاصر (` HTMLElement`).
- ...ÙØ£Ùثر Ø¨ÙØ«Ùر...
عÙ٠سبÙ٠اÙÙ
ثاÙ:
```html run height="80"
<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/#htmlinputelement>.
أ٠إذا ÙÙØ§ ÙØ±ØºØ¨ ÙÙ Ø§ÙØØµÙ٠عÙÙÙÙ
بسرعة Ø£Ù Ù
ÙØªÙ
Ù٠بÙ
ÙØ§ØµÙات Ù
ØªØµÙØ Ù
ØØ¯Ø¯Ø© - ÙÙ
ÙÙÙØ§ دائÙ
ÙØ§ إخراج Ø§ÙØ¹Ùصر باستخداÙ
`console.dir (elem)` ÙÙØ±Ø§Ø¡Ø© Ø§ÙØ®ØµØ§Ø¦Øµ. Ø£Ù Ø§Ø³ØªÙØ´Ù "خصائص DOM" ÙÙ Ø¹ÙØ§Ù
Ø© Ø§ÙØªØ¨ÙÙØ¨ "Ø§ÙØ¹Ùاصر" ÙÙ Ø£Ø¯ÙØ§Øª Ù
Ø·ÙØ± اÙÙ
ØªØµÙØ.
## Ù
ÙØ®Øµ
ØªÙØªÙ
Ù ÙÙ Ø¹ÙØ¯Ø© DOM Ø¥ÙÙ ÙØ¦Ø© Ù
عÙÙØ©. تشÙ٠اÙÙØµÙÙ ÙØ±Ù
ÙØ©. Ù
جÙ
ÙØ¹Ø© ÙØ§Ù
ÙØ© Ù
Ù Ø§ÙØ®ØµØ§Ø¦Øµ ÙØ§ÙأساÙÙØ¨ ØªØ£ØªÙ ÙØªÙجة اÙÙ
ÙØ±Ø§Ø«.
خصائص Ø¹ÙØ¯Ø© DOM Ø§ÙØ±Ø¦ÙØ³ÙØ© ÙÙ:
`nodeType`
: ÙÙ
ÙÙÙØ§ استخداÙ
Ù ÙÙ
Ø¹Ø±ÙØ© Ù
ا إذا ÙØ§Ùت Ø§ÙØ¹Ùدة عبارة Ø¹Ù ÙØµ Ø£Ù Ø¹ÙØ¯Ø© Ø¹ÙØµØ±. ÙØØªÙ٠عÙÙ ÙÙÙ
Ø© رÙÙ
ÙØ©: `1` ÙÙØ¹Ùاصر Ø` 3` ÙÙØ¹Ùد اÙÙØµÙØ© Ø ÙØ¨Ø¹Ø¶ Ø§ÙØ¹Ùاصر Ø§ÙØ£Ø®Ø±Ù ÙØ£ÙÙØ§Ø¹ Ø§ÙØ¹Ùد Ø§ÙØ£Ø®Ø±Ù. ÙÙØ±Ø£ ÙÙØ·.
`nodeName / tagName`
: ÙÙØ¹Ùاصر Ø Ø§Ø³Ù
Ø§ÙØ¹ÙاÙ
Ø© (Ø£ØØ±Ù ÙØ¨Ùرة Ù
ا ÙÙ
ÙÙÙ ÙØ¶Ø¹ XML). باÙÙØ³Ø¨Ø© Ø¥ÙÙ Ø§ÙØ¹Ùد ØºÙØ± Ø§ÙØ¹Ùصر Ø ÙØµÙ `nodeName` Ù
ا ÙÙ. ÙÙØ±Ø£ ÙÙØ·.
`innerHTML`
: Ù
ØØªÙÙ HTML ÙÙØ¹Ùصر. ÙÙ
Ù٠تعدÙÙÙ.
`outerHTML`
: HTML اÙÙØ§Ù
Ù ÙÙØ¹Ùصر. ÙØ§ تÙÙ
س عÙ
ÙÙØ© اÙÙØªØ§Ø¨Ø© ÙÙ `elem.outerHTML`` elem` ÙÙØ³Ùا. Ø¨Ø¯ÙØ§Ù Ù
٠ذÙÙ Ø ÙØªÙ
استبداÙ٠ب٠HTML Ø§ÙØ¬Ø¯Ùد ÙÙ Ø§ÙØ³ÙØ§Ù Ø§ÙØ®Ø§Ø±Ø¬Ù.
`nodeValue / data`
: Ù
ØØªÙÙ Ø¹ÙØ¯Ø© ØºÙØ± Ø¹ÙØµØ± (ÙØµ Ø ØªØ¹ÙÙÙ). ÙØ°Ø§Ù اÙÙÙØ¹Ø§Ù Ù
ØªØ´Ø§Ø¨ÙØ§Ù ØªÙØ±ÙØ¨ÙØ§ Ø ÙØ¹Ø§Ø¯Ø© Ù
ا ÙØ³ØªØ®Ø¯Ù
`Ø§ÙØ¨ÙØ§ÙØ§Øª '. ÙÙ
Ù٠تعدÙÙÙ.
`textContent`
: اÙÙØµ اÙÙ
ÙØ¬Ùد Ø¯Ø§Ø®Ù Ø§ÙØ¹Ùصر: HTML ÙØ§Ùص جÙ
ÙØ¹ `<tags>`. تؤد٠اÙÙØªØ§Ø¨Ø© ÙÙ٠إÙÙ ÙØ¶Ø¹ اÙÙØµ Ø¯Ø§Ø®Ù Ø§ÙØ¹Ùصر Ø Ù
ع Ù
عاÙ
ÙØ© جÙ
ÙØ¹ Ø§ÙØ£ØØ±Ù ÙØ§ÙØ¹ÙØ§Ù
ات Ø§ÙØ®Ø§ØµØ© ÙÙØµ. ÙÙ
Ù٠إدراج اÙÙØµ Ø§ÙØ°Ù ÙÙØ´Ø¦Ù اÙÙ
ستخدÙ
بأÙ
Ø§Ù ÙØ§ÙØÙ
Ø§ÙØ© Ù
Ù Ø¥Ø¯Ø®Ø§ÙØ§Øª HTML ØºÙØ± اÙÙ
Ø±ØºÙØ¨ ÙÙÙØ§.
"Ù
Ø®ÙÙ"
: Ø¹ÙØ¯ Ø§ÙØªØ¹ÙÙ٠عÙÙ "true" Ø ÙØªÙ
عرض CSS `display: none`.
ØªØØªÙÙ Ø¹ÙØ¯ DOM Ø£ÙØ¶Ùا عÙ٠خصائص Ø£Ø®Ø±Ù Ø¨ÙØ§Ø¡Ù عÙÙ ÙØ¦ØªÙا. عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø Ø¹ÙØ§ØµØ± `<input>` (`HTMLInputElement`) تدعÙ
` اÙÙÙÙ
Ø©` Ø `اÙÙÙØ¹` Ø ÙÙ ØÙ٠أÙ` <a> Ø§ÙØ¹Ùاصر (`HTMLAnchorElement`) تدعÙ
` href` Ø¥ÙØ®. Ù
عظÙ
سÙ
ات HTML اÙÙÙØ§Ø³ÙØ© ÙÙØ§ Ø®Ø§ØµÙØ© DOM Ù
ÙØ§Ø¨ÙØ© .
ÙÙ
ع ذÙÙ Ø ÙØ¥Ù خصائص HTML ÙØ®ØµØ§Ø¦Øµ DOM ÙÙØ³Øª ÙÙ ÙÙØ³Ùا دائÙ
ÙØ§ Ø ÙÙ
ا Ø³ÙØ±Ù Ù٠اÙÙØµÙ Ø§ÙØªØ§ÙÙ.
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)