DOM Ø§ÙØªØ¹Ø¯ÙÙ ÙÙ Ù ÙØªØ§Ø Ø¥ÙØ´Ø§Ø¡ ØµÙØØ§Øª âØÙØ©â.
Ø³ÙØ±Ù ÙÙØ§ ÙÙÙÙØ© Ø¥ÙØ´Ø§Ø¡ Ø¹ÙØ§ØµØ± Ø¬Ø¯ÙØ¯Ø© âØ¨Ø³Ø±Ø¹Ø©â ÙØªØ¹Ø¯ÙÙ Ù ØØªÙÙ Ø§ÙØµÙØØ© Ø§ÙØØ§ÙÙØ©.
٠ثاÙ: Ø¥Ø¸ÙØ§Ø± Ø±Ø³Ø§ÙØ©
دعÙÙØ§ ÙØªØ¸Ø§Ùر باستخدا٠٠ثاÙ. Ø³ÙØ¶ÙÙ Ø±Ø³Ø§ÙØ© عÙÙ Ø§ÙØµÙØØ© ØªØ¨Ø¯Ù Ø£Ø¬Ù Ù Ù Ù âØªÙØ¨ÙÙâ.
Ø¥ÙÙÙ ÙÙ٠ستبدÙ:
<style>
.alert {
padding: 15px;
border: 1px solid #d6e9c6;
border-radius: 4px;
color: #3c763d;
background-color: #dff0d8;
}
</style>
<div class="alert">
<strong>Hi there!</strong> You've read an important message.
</div>
ÙØ§Ù ÙØ°Ø§ Ù
ثا٠HTML. Ø§ÙØ¢Ù Ø¯Ø¹ÙØ§ ÙÙØ´Ø¦ ÙÙØ³ div باستخداÙ
JavaScript (عÙÙ Ø§ÙØªØ±Ø§Ø¶ Ø£Ù Ø§ÙØ£ÙÙ
اط Ù
ÙØ¬Ùدة ÙÙ HTML Ø£Ù Ù
ÙÙ CSS خارجÙ).
Ø¥ÙØ´Ø§Ø¡ Ø¹ÙØµØ±
ÙØ¥Ùشاء Ø¹ÙØ¯ DOM Ø ÙÙØ§Ù طرÙÙØªØ§Ù:
document.createElement(tag)-
Creates a new element node with the given tag:
let div = document.createElement('div'); document.createTextNode(text)-
Creates a new text node with the given text:
let textNode = document.createTextNode('Here I am');
ÙÙ ØØ§ÙØªÙØ§Ø تÙÙÙ Ø§ÙØ±Ø³Ø§ÙØ© div Ù
ع ÙØ¦Ø©` ØªÙØ¨ÙÙ 'Ù HTML ÙÙÙØ§:
Ø¥ÙØ´Ø§Ø¡ Ø§ÙØ±Ø³Ø§ÙØ©
ÙÙ ØØ§ÙØªÙØ§Ø Ø¥ÙØ´Ø§Ø¡ div Ø§ÙØ±Ø³Ø§ÙØ© ÙÙØ·Ùب 3 Ù
راØÙ:
// 1. Create <div> element
let div = document.createElement('div');
// 2. Set its class to "alert"
div.className = "alert";
// 3. Fill it with the content
div.innerHTML = "<strong>Hi there!</strong> You've read an important message.";
ÙÙØ¯ Ø£ÙØ´Ø£Ùا Ø§ÙØ¹Ùصر Ø ÙÙÙÙ ØØªÙ Ø§ÙØ¢Ù Ø¥ÙÙ Ù ØªØºÙØ± ÙÙØ·. ÙØ§ ÙÙ ÙÙÙØ§ Ø±Ø¤ÙØ© Ø§ÙØ¹Ùصر عÙÙ Ø§ÙØµÙØØ© Ø ÙØ£ÙÙ ÙÙØ³ Ø¬Ø²Ø¡ÙØ§ ٠٠اÙÙ Ø³ØªÙØ¯ ØØªÙ Ø§ÙØ¢Ù
Ø·Ø±Ù Ø§ÙØ¥Ø¯Ø±Ø§Ø¬
ÙØ¹Ø±Ø¶ âdivâ Ø ÙØØªØ§Ø¬ Ø¥Ù٠إدراج٠ÙÙ Ù
ÙØ§Ù Ù
ا ÙÙ âØ§ÙÙ
Ø³ØªÙØ¯â. عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø ÙÙ document.body. ÙÙØ§Ù طرÙÙØ© خاصة append ÙØ°ÙÙ:document.body.append (div).
تÙÙØ± ÙØ°Ù اÙÙ Ø¬Ù ÙØ¹Ø© Ù Ù Ø§ÙØ·Ø±Ù اÙÙ Ø²ÙØ¯ Ù Ù Ø§ÙØ·Ø±Ù ÙØ¥Ø¯Ø±Ø§Ø¬:
node.append (... nodes or strings)â Ø¥ÙØØ§Ù Ø¹ÙØ¯ Ø£Ù Ø³ÙØ§Ø³Ù ÙÙ ÙÙØ§ÙØ©nodeØnode.prepend (... Ø§ÙØ¹Ùد Ø£Ù Ø§ÙØ³ÙاسÙ)â Ø¥Ø¯Ø±Ø§Ø¬ Ø§ÙØ¹Ùد Ø£Ù Ø§ÙØ³Ùاس٠ÙÙ Ø¨Ø¯Ø§ÙØ©Ø§ÙØ¹ÙØ¯Ø©Ønode.before (... nodes or strings)â- Ø£Ø¯Ø®Ù Ø§ÙØ¹Ùد Ø£Ù Ø§ÙØ³ÙØ§Ø³Ù ÙØ¨ÙnodeØnode.after(...nodes or strings)â Ø¥Ø¯Ø±Ø§Ø¬ Ø§ÙØ¹Ùد Ø£Ù Ø§ÙØ³ÙØ§Ø³Ù Ø¨Ø¹Ø¯Ø§ÙØ¹ÙدةØnode.replaceWith (... Ø§ÙØ¹Ùد Ø£Ù Ø§ÙØ³ÙاسÙ)â - ÙØ³ØªØ¨Ø¯ÙØ§ÙØ¹ÙØ¯Ø©Ø¨Ø§ÙØ¹Ùد Ø£Ù Ø§ÙØ³Ùاس٠اÙ٠عطاة.
ÙÙ٠ا ÙÙ٠٠ثا٠عÙÙ Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ°Ù Ø§ÙØ£Ø³Ø§ÙÙØ¨ ÙØ¥Ø¶Ø§ÙØ© Ø¹ÙØ§ØµØ± Ø¥ÙÙ ÙØ§Ø¦Ù Ø© ÙØ§ÙÙØµ ÙØ¨ÙÙØ§ / Ø¨Ø¹Ø¯ÙØ§:
<ol id="ol">
<li>0</li>
<li>1</li>
<li>2</li>
</ol>
<script>
ol.before('before'); // insert string "before" before <ol>
ol.after('after'); // insert string "after" after <ol>
let liFirst = document.createElement('li');
liFirst.innerHTML = 'prepend';
ol.prepend(liFirst); // insert liFirst at the beginning of <ol>
let liLast = document.createElement('li');
liLast.innerHTML = 'append';
ol.append(liLast); // insert liLast at the end of <ol>
</script>
ÙØ°Ù ØµÙØ±Ø© Ø¨ØµØ±ÙØ© Ø¹Ù Ø§ÙØ£Ø³Ø§ÙÙØ¨ Ø§ÙØªÙ ØªÙØ¹ÙÙØ§:
ÙØ°Ø§ ستÙÙ٠اÙÙØ§Ø¦Ù Ø© اÙÙÙØ§Ø¦ÙØ©:
before
<ol id="ol">
<li>prepend</li>
<li>0</li>
<li>1</li>
<li>2</li>
<li>append</li>
</ol>
after
ÙÙ ÙÙ ÙÙØ°Ù Ø§ÙØ·Ø±Ù إدراج ÙÙØ§Ø¦Ù ٠تعددة ÙÙØ¹Ùد ÙØ§ÙÙØ·Ø¹ اÙÙØµÙØ© ÙÙ Ù ÙØ§ÙÙ Ø© ÙØ§ØØ¯Ø©.
عÙ٠سبÙ٠اÙÙ Ø«Ø§Ù Ø ÙÙØ§ ÙØªÙ إدراج Ø³ÙØ³ÙØ© ÙØ¹Ùصر:
<div id="div"></div>
<script>
div.before('<p>Hello</p>', document.createElement('hr'));
</script>
ÙØªÙ إدراج Ù٠اÙÙØµ * ÙÙØµ *.
إذ٠HTML اÙÙÙØ§Ø¦Ù ÙÙ:
<p>Hello</p>
<hr>
<div id="div"></div>
ب٠عÙ٠آخر Ø ÙØªÙ Ø¥Ø¯Ø®Ø§Ù Ø§ÙØ³Ùاس٠بطرÙÙØ© Ø¢Ù ÙØ© Ø Ù Ø«Ù `` elem.textContent` ÙÙØ¹Ù ذÙÙ.
ÙØ°ÙÙ Ø ÙØ§ ÙÙ ÙÙ Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ°Ù Ø§ÙØ·Ø±Ù Ø¥ÙØ§ ÙØ¥Ø¯Ø±Ø§Ø¬ Ø¹ÙØ¯ DOM أ٠أجزاء ÙØµÙØ©.
ÙÙÙÙ Ù
اذا ÙÙ Ø£Ø±Ø¯ÙØ§ إدراج HTML âÙÙ htmlâ Ø Ù
ع عÙ
٠جÙ
ÙØ¹ Ø§ÙØ¹ÙاÙ
ات ÙØ§ÙØ£Ø´ÙØ§Ø¡ Ø Ù
ث٠elem.innerHTML?
insertAdjacentHTML / Text / Element
ÙØ°ÙÙ ÙÙ
ÙÙÙØ§ استخداÙ
طرÙÙØ© أخر٠Ù
تعددة Ø§ÙØ§Ø³ØªØ®Ø¯Ø§Ù
ات: elem.insertAdjacentHTML (ØÙØ« Ø html).
اÙÙ
عÙÙ
Ø© Ø§ÙØ£ÙÙÙ ÙÙ ÙÙÙ
Ø© ÙÙØ¯ Ø ØªØØ¯Ø¯ Ù
ÙØ§Ù إدراج ÙØ³Ø¨Ø© Ø¥ÙÙ elem. ÙØ¬Ø¨ Ø£Ù ÙÙÙÙ ÙØ§ØØ¯Ùا Ù
Ù
ا ÙÙÙ:
- âbeforebeginâ â- أدخÙâ html âÙ Ø¨Ø§Ø´Ø±Ø©Ù ÙØ¨Ùâ elem "Ø
- âafterbeginâ â- أدخÙâ html âÙÙâ elem "ÙÙ Ø§ÙØ¨Ø¯Ø§ÙØ© Ø
- âÙØ¨Ùâ â- أدخÙâ html âÙÙâ elem "Ø Ù٠اÙÙÙØ§ÙØ© Ø
- ââ Ø¨Ø¹Ø¯ ÙÙØ§ÙØ© ââ â Ø£Ø¯Ø®Ù âhtmlâ ٠باشرة بعد âelemâ.
اÙ٠عÙÙ Ø© Ø§ÙØ«Ø§ÙÙØ© ÙÙ Ø³ÙØ³ÙØ© HTML Ø ÙØªÙ Ø¥Ø¯Ø±Ø§Ø¬ÙØ§ âÙÙ HTMLâ.
عÙ٠سبÙ٠اÙ٠ثاÙ:
<div id="div"></div>
<script>
div.insertAdjacentHTML('beforebegin', '<p>Hello</p>');
div.insertAdjacentHTML('afterend', '<p>Bye</p>');
</script>
â¦ Ø³ÙØ¤Ø¯Ù Ø¥ÙÙ:
<p>Hello</p>
<div id="div"></div>
<p>Bye</p>
ÙØ°Ù ÙÙ Ø§ÙØ·Ø±ÙÙØ© Ø§ÙØªÙ ÙÙ ÙÙÙØ§ Ø¨ÙØ§ Ø¥ÙØØ§Ù HTML Ø§ÙØªØ¹Ø³ÙÙ Ø¨Ø§ÙØµÙØØ©.
Ø¥ÙÙÙ ØµÙØ±Ø© Ù ØªØºÙØ±Ø§Øª Ø§ÙØ¥Ø¯Ø±Ø§Ø¬:
! [] (insert-adjacent.svg)!
ÙÙ ÙÙÙØ§ Ø£Ù ÙÙØ§ØØ¸ بسÙÙÙØ© Ø£ÙØ¬Ù Ø§ÙØªØ´Ø§Ø¨Ù بÙÙ ÙØ°Ø§ ÙØ§ÙØµÙØ±Ø© Ø§ÙØ³Ø§Ø¨ÙØ©. ÙÙØ§Ø· Ø§ÙØ¥Ø¯Ø±Ø§Ø¬ ÙÙ ÙÙØ³Ùا Ù٠اÙÙØ§Ùع Ø ÙÙÙÙ ÙØ°Ù Ø§ÙØ·Ø±ÙÙØ© تدخ٠HTML.
Ø§ÙØ·Ø±ÙÙØ© ÙØ¯ÙÙØ§ Ø´ÙÙÙØ§Ù:
elem.insertAdjacentText (ØÙØ« Ø ÙØµ)â ÙÙØ³ Ø§ÙØ¨ÙÙØ© Ø ÙÙÙÙ ÙØªÙ إدراج Ø³ÙØ³ÙØ© âÙØµâ âÙÙØµâ Ø¨Ø¯ÙØ§Ù Ù Ù HTML Øelem.insertAdjacentElement (Ø£ÙÙ Ø elem)â ÙÙØ³ Ø§ÙØ¨ÙÙØ© Ø ÙÙÙ٠إدراج Ø¹ÙØµØ±.
ÙÙÙ Ù
ÙØ¬Ùدة بشÙÙ Ø£Ø³Ø§Ø³Ù ÙØ¬Ø¹Ù Ø¨ÙØ§Ø¡ Ø§ÙØ¬Ù
ÙØ© âÙ
ÙØØ¯ÙØ§â. عÙ
ÙÙÙØ§ Ø ÙØªÙ
استخداÙ
insertAdjacentHTML ÙÙØ· Ù
عظÙ
اÙÙÙØª. ÙØ£Ù Ø§ÙØ¹Ùاصر ÙØ§ÙÙØµÙص Ø ÙØ¯ÙÙØ§ Ø·Ø±Ù âØ¥ÙØØ§Ù / ÙØ¨Ù / ÙØ¨Ù / بعدâ â ÙÙÙ Ø£ÙØµØ± Ù٠اÙÙØªØ§Ø¨Ø© ÙÙÙ
ÙÙÙØ§ إدراج Ø§ÙØ¹Ùد / أجزاء اÙÙØµ.
ÙØ°Ø§ Ø¥ÙÙÙ Ù ØªØºÙØ± بدÙÙ ÙØ¹Ø±Ø¶ Ø±Ø³Ø§ÙØ©:
<style>
.alert {
padding: 15px;
border: 1px solid #d6e9c6;
border-radius: 4px;
color: #3c763d;
background-color: #dff0d8;
}
</style>
<script>
document.body.insertAdjacentHTML("afterbegin", `<div class="alert">
<strong>Hi there!</strong> You've read an important message.
</div>`);
</script>
Ø¥Ø²Ø§ÙØ© Ø§ÙØ¹Ùدة
ÙØ¥Ø²Ø§ÙØ© Ø§ÙØ¹Ùدة Ø ÙÙØ§Ù طرÙÙØ© node.remove ().
دعÙÙØ§ ÙØ¬Ø¹Ù Ø±Ø³Ø§ÙØªÙا تختÙ٠بعد ثاÙÙØ©:
<style>
.alert {
padding: 15px;
border: 1px solid #d6e9c6;
border-radius: 4px;
color: #3c763d;
background-color: #dff0d8;
}
</style>
<script>
let div = document.createElement('div');
div.className = "alert";
div.innerHTML = "<strong>Hi there!</strong> You've read an important message.";
document.body.append(div);
setTimeout(() => div.remove(), 1000);
</script>
ÙØ±Ø¬Ù Ù ÙØ§ØØ¸Ø©: إذا Ø£Ø±Ø¯ÙØ§ * ÙÙÙ * Ø¹ÙØµØ± Ø¥ÙÙ Ù ÙØ§Ù آخر â ÙÙØ§ ØØ§Ø¬Ø© ÙØ¥Ø²Ø§ÙØªÙ Ù Ù Ø§ÙØ¹Ùصر اÙÙØ¯ÙÙ .
** تÙÙÙ Ø¬Ù ÙØ¹ Ø·Ø±Ù Ø§ÙØ¥Ø¯Ø±Ø§Ø¬ تÙÙØ§Ø¦ÙÙØ§ Ø¨Ø¥Ø²Ø§ÙØ© Ø§ÙØ¹Ùدة ٠٠اÙÙ ÙØ§Ù اÙÙØ¯ÙÙ . **
عÙ٠سبÙ٠اÙÙ Ø«Ø§Ù Ø Ø¯Ø¹ÙØ§ ÙØªØ¨Ø§Ø¯Ù Ø§ÙØ¹Ùاصر:
<div id="first">First</div>
<div id="second">Second</div>
<script>
// no need to call remove
second.after(first); // take #second and after it insert #first
</script>
Ø¹ÙØ¯ Ø§ÙØ§Ø³ØªÙساخ: cloneNode
ÙÙÙÙØ© إدراج Ø±Ø³Ø§ÙØ© Ø£Ø®Ø±Ù Ù Ù Ø§Ø«ÙØ©Ø
ÙÙ ÙÙÙØ§ Ø¹Ù Ù Ø¯Ø§ÙØ© ÙÙØ¶Ø¹ اÙÙÙØ¯ ÙÙØ§Ù. ÙÙÙ Ø§ÙØ·Ø±ÙÙØ© Ø§ÙØ¨Ø¯ÙÙØ© ستÙÙÙ * Ø§Ø³ØªÙØ³Ø§Ø® * âdivâ Ø§ÙÙ ÙØ¬Ùد ÙØªØ¹Ø¯Ù٠اÙÙØµ اÙÙ ÙØ¬Ùد بداخÙÙ (إذا ÙØ²Ù Ø§ÙØ£Ù ر).
Ù٠بعض Ø§ÙØ£ØÙØ§Ù Ø¹ÙØ¯Ù ا ÙÙÙÙ ÙØ¯ÙÙØ§ Ø¹ÙØµØ± ÙØ¨Ùر Ø ÙØ¯ ÙÙÙ٠ذÙ٠أسرع ÙØ£Ø¨Ø³Ø·.
- Ø§ÙØ§Ø³ØªØ¯Ø¹Ø§Ø¡ âelem.cloneNode (true)â ÙØ®ÙÙ Ø§Ø³ØªÙØ³Ø§Ø® âØ¹Ù
ÙÙâ ÙÙØ¹Ùصر â Ù
ع جÙ
ÙØ¹ Ø§ÙØ³Ù
ات ÙØ§ÙØ¹ÙØ§ØµØ± اÙÙØ±Ø¹ÙØ©. إذا ÙÙØ§ ÙØ³Ù
Ù
elem.cloneNode (false)Ø ÙØ¥Ù Ø§ÙØ§Ø³ØªÙساخ ÙØªÙ بدÙÙ Ø¹ÙØ§ØµØ± تابعة.
٠ثا٠ÙÙØ³Ø® Ø§ÙØ±Ø³Ø§ÙØ©:
<style>
.alert {
padding: 15px;
border: 1px solid #d6e9c6;
border-radius: 4px;
color: #3c763d;
background-color: #dff0d8;
}
</style>
<div class="alert" id="div">
<strong>Hi there!</strong> You've read an important message.
</div>
<script>
let div2 = div.cloneNode(true); // clone the message
div2.querySelector('strong').innerHTML = 'Bye there!'; // change the clone
div.after(div2); // show the clone after the existing div
</script>
DocumentFragment
DocumentFragment عبارة Ø¹Ù Ø¹ÙØ¯Ø© DOM خاصة تعÙ
Ù ÙØºÙØ§Ù ÙØªÙ
Ø±ÙØ± ÙÙØ§Ø¦Ù
Ø§ÙØ¹Ùد.
ÙÙ ÙÙÙØ§ Ø¥ÙØØ§Ù Ø§ÙØ¹Ùد Ø§ÙØ£Ø®Ø±Ù Ø¨ÙØ§ Ø ÙÙÙÙ Ø¹ÙØ¯Ù ا ÙØ¯Ø±Ø¬Ùا ÙÙ Ù ÙØ§Ù ٠ا Ø ÙØªÙ إدراج Ù ØØªÙØ§ÙØ§ Ø¨Ø¯ÙØ§Ù ٠٠ذÙÙ.
عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø ÙÙÙØ´Ø¦ getListContent Ø£Ø¯ÙØ§Ù Ø¬Ø²Ø¡ÙØ§ ÙØØªÙ٠عÙÙ Ø¹ÙØ§ØµØ±<li>Ø ÙØ§ÙØªÙ ÙØªÙ
Ø¥Ø¯Ø±Ø§Ø¬ÙØ§ ÙØ§ØÙÙØ§ ÙÙ<ul>:
<ul id="ul"></ul>
<script>
function getListContent() {
let fragment = new DocumentFragment();
for(let i=1; i<=3; i++) {
let li = document.createElement('li');
li.append(i);
fragment.append(li);
}
return fragment;
}
ul.append(getListContent()); // (*)
</script>
ÙØ±Ø¬Ù Ù
ÙØ§ØØ¸Ø© Ø£ÙÙ ÙÙ Ø§ÙØ³Ø·Ø± Ø§ÙØ£Ø®Ùر (*) ÙÙØÙ DocumentFragment Ø ÙÙÙÙÙ" ÙÙ
تزج "Ø ÙØ¨Ø§ÙتاÙÙ ÙØ¥Ù Ø§ÙØ¨ÙÙØ© اÙÙØ§ØªØ¬Ø© ستÙÙÙ:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
DocumentFragment ÙØ§Ø¯Ø±Ø§ Ù
ا ÙØ³ØªØ®Ø¯Ù
ØµØ±Ø§ØØ©. ÙÙ
اذا تضÙ٠إÙÙ ÙÙØ¹ خاص Ù
Ù Ø§ÙØ¹Ùدة Ø Ø¥Ø°Ø§ ÙØ§Ù بإÙ
ÙØ§ÙÙØ§ إرجاع Ù
جÙ
ÙØ¹Ø© Ù
Ù Ø§ÙØ¹Ùد Ø¨Ø¯ÙØ§Ù Ù
٠ذÙÙØ Ù
ثا٠Ù
عاد ÙØªØ§Ø¨ØªÙ:
<ul id="ul"></ul>
<script>
function getListContent() {
let result = [];
for(let i=1; i<=3; i++) {
let li = document.createElement('li');
li.append(i);
result.push(li);
}
return result;
}
ul.append(...getListContent()); // append + "..." operator = friends!
</script>
ÙØ°Ùر DocumentFragment بشÙÙ Ø£Ø³Ø§Ø³Ù ÙØ¸Ø±Ùا ÙÙØ¬Ùد بعض اÙÙ
ÙØ§ÙÙÙ
ÙÙÙÙ Ø Ù
Ø«Ù Ø¹ÙØµØ± [template] (info: template-element) Ø Ø§ÙØ°Ù Ø³ÙØºØ·ÙÙ ÙØ§ØÙÙØ§.
طرÙÙØ© إدخا٠/ Ø¥Ø²Ø§ÙØ© اÙ٠درسة اÙÙØ¯ÙÙ Ø©
[ÙØ¯ÙÙ ]
ÙÙØ§Ù Ø£ÙØ¶Ùا Ø·Ø±Ù Ù Ø¹Ø§ÙØ¬Ø© DOM âØ§Ù٠درسة اÙÙØ¯ÙÙ Ø©â Ø Ù ÙØ¬Ùدة ÙØ£Ø³Ø¨Ø§Ø¨ ØªØ§Ø±ÙØ®ÙØ©.
ØªØ£ØªÙ ÙØ°Ù Ø§ÙØ£Ø³Ø§ÙÙØ¨ Ù Ù Ø§ÙØ¹ØµÙر اÙÙØ¯ÙÙ Ø© ØÙÙØ§. Ù٠اÙÙÙØª Ø§ÙØØ§Ø¶Ø± Ø ÙØ§ ÙÙØ¬Ø¯ سبب ÙØ§Ø³ØªØ®Ø¯Ø§Ù ÙØ§ Ø ØÙØ« Ø£Ù Ø§ÙØ£Ø³Ø§ÙÙØ¨ Ø§ÙØØ¯ÙØ«Ø© Ø Ù Ø«Ù âØ¥ÙØØ§Ùâ Ø âÙØ¨Ùâ Ø âÙØ¨Ùâ Ø âØ¨Ø¹Ø¯â Ø âØ¥Ø²Ø§ÙØ©â Ø âØ§Ø³ØªØ¨Ø¯Ø§Ùâ Ø تÙÙÙ Ø£ÙØ«Ø± ٠رÙÙØ©.
Ø§ÙØ³Ø¨Ø¨ اÙÙØÙØ¯ ÙØ¥Ø¯Ø±Ø§Ø¬ ÙØ°Ù Ø§ÙØ·Ø±Ù ÙÙØ§ Ù٠أÙÙ ÙÙ ÙÙÙ Ø§ÙØ¹Ø«Ùر عÙÙÙØ§ ÙÙ Ø§ÙØ¹Ø¯Ùد ٠٠اÙÙØµÙص اÙÙØ¯ÙÙ Ø©:
اÙÙØ§ÙداÙ. appendChild (Ø§ÙØ¹Ùدة)-
Ø¥ÙØØ§Ù
Ø§ÙØ¹Ùدةبآخر Ø·ÙÙ ÙÙ" اÙÙØ§ÙدÙÙ ".ÙØ¶Ù٠اÙÙ Ø«Ø§Ù Ø§ÙØªØ§ÙÙ
<li>Ø¬Ø¯ÙØ¯Ø© Ø¥ÙÙ ÙÙØ§ÙØ©<ol>:<ol id="list"> <li>0</li> <li>1</li> <li>2</li> </ol> <script> let newLi = document.createElement('li'); newLi.innerHTML = 'Hello, world!'; list.appendChild(newLi); </script>
parentElem.insertBefore(node, nextSibling)
:إدراج âØ§ÙØ¹Ùدةâ ÙØ¨Ù ânextSiblingâ ÙÙ âmotherElemâ.
ÙØ¯Ø±Ø¬ اÙÙÙØ¯ Ø§ÙØªØ§ÙÙ Ø¹ÙØµØ± ÙØ§Ø¦Ù
Ø© Ø¬Ø¯ÙØ¯ ÙØ¨Ù Ø§ÙØ«Ø§ÙÙØ© `<li>`:
```html run height=100
<ol id="list">
<li>0</li>
<li>1</li>
<li>2</li>
</ol>
<script>
let newLi = document.createElement('li');
newLi.innerHTML = 'Hello, world!';
*!*
list.insertBefore(newLi, list.children[1]);
*/!*
</script>
```
ÙØ¥Ø¯Ø±Ø§Ø¬ `newLi` ÙØ¹Ùصر Ø£ÙÙ Ø ÙÙ
ÙÙÙØ§ اÙÙÙØ§Ù
بذÙ٠عÙ٠اÙÙØÙ Ø§ÙØªØ§ÙÙ:
```js
list.insertBefore(newLi, list.firstChild);
```
parentElem.replaceChild(node, oldChild)
:ÙØ³ØªØ¨Ø¯Ù oldChild بÙ" Ø¹ÙØ¯Ø© âØ¨ÙÙ Ø£Ø·ÙØ§Ùâ Ø§ÙÙØ§ÙدÙÙ ".
اÙÙØ§ÙدÙÙ ØØ°Ù Ø§ÙØ·ÙÙ (Ø¹ÙØ¯Ø©)-
ÙØ²ÙÙ
Ø§ÙØ¹ÙØ¯Ø©Ù ÙØ§ÙÙØ§ÙدÙÙ(Ø¨Ø§ÙØªØ±Ø§Ø¶ Ø£ÙØ§ÙØ¹ÙØ¯Ø©ÙÙ ØªØ§Ø¨Ø¹ÙØ§).اÙÙ Ø«Ø§Ù Ø§ÙØªØ§ÙÙ ÙØ²ÙÙ ``
Ø£ÙÙØ§Ù Ù Ù- `:
<ol id="list"> <li>0</li> <li>1</li> <li>2</li> </ol> <script> let li = list.firstElementChild; list.removeChild(li); </script>
ÙÙ ÙØ°Ù Ø§ÙØ£Ø³Ø§ÙÙØ¨ ترجع Ø§ÙØ¹Ùدة اÙÙ
درجة / اÙÙ
ÙØ²Ø§ÙØ©. بÙ
عÙ٠آخر Ø ØªÙØ±Ø¬Ø¹ parents 'appendChild (Ø§ÙØ¹Ùدة) Ø§ÙØ¹Ùدة`. ÙÙÙ٠عادة ÙØ§ ÙØªÙ
استخداÙ
اÙÙÙÙ
Ø© Ø§ÙØªÙ تÙ
Ø¥Ø±Ø¬Ø§Ø¹ÙØ§ Ø ÙÙÙÙ
ÙÙØ· بتشغÙÙ Ø§ÙØ·Ø±ÙÙØ©.
ÙÙÙ Ø© ع٠âdocument.writeâ
ÙÙØ§Ù طرÙÙØ© Ø£Ø®Ø±Ù ÙØ¯ÙÙ
Ø© Ø¬Ø¯ÙØ§ ÙØ¥Ø¶Ø§ÙØ© Ø´ÙØ¡ Ù
ا Ø¥ÙÙ ØµÙØØ© اÙÙÙØ¨: document.write.
Ø§ÙØµÙغة:
<p>Somewhere in the page...</p>
<script>
document.write('<b>Hello from JS</b>');
</script>
<p>The end</p>
ÙØ¤Ø¯Ù استدعاء "document.write (html)Ø¥ÙÙ ÙØªØ§Ø¨Ø© "html" ÙÙ Ø§ÙØµÙØØ© "ÙÙØ§ ÙØ§ÙØ¢Ù". ÙÙ
ÙÙ Ø¥ÙØ´Ø§Ø¡ Ø³ÙØ³ÙØ©html` دÙÙØ§Ù
ÙÙÙÙØ§ Ø ÙØ°Ø§ ÙÙÙ Ù
Ø±ÙØ© ÙÙØ¹Ùا Ù
ا. ÙÙ
ÙÙÙØ§ استخداÙ
JavaScript ÙØ¥Ùشاء ØµÙØØ© ÙÙØ¨ ÙØ§Ù
ÙØ© ÙÙØªØ§Ø¨ØªÙا.
ØªØ£ØªÙ Ø§ÙØ·Ø±ÙÙØ© Ù Ù Ø§ÙØ£ÙÙØ§Øª Ø§ÙØªÙ ÙÙ ÙÙÙ ÙÙÙØ§ DOM Ø ÙÙØ§ ٠عاÙÙØ± â¦ Ø§ÙØ£ÙÙØ§Øª اÙÙØ¯ÙÙ Ø© ØÙÙØ§. Ø¥ÙÙØ§ ÙØ§ تزا٠ØÙØ© Ø ÙØ£Ù ÙÙØ§Ù Ø³ÙØ±Ø¨ØªØ§Øª ØªØ³ØªØ®Ø¯Ù ÙØ§.
Ù٠اÙÙØµÙص Ø§ÙØØ¯ÙØ«Ø© ÙØ§Ø¯Ø±Ùا ٠ا ÙØ±Ø§Ùا بسبب اÙÙÙÙØ¯ اÙÙ ÙÙ Ø© Ø§ÙØªØ§ÙÙØ©:
** ÙØ§ ÙØ¹Ù
Ù Ø§ÙØ§ØªØµØ§Ù ب٠document.write Ø¥ÙØ§ Ø£Ø«ÙØ§Ø¡ تØÙ
ÙÙ Ø§ÙØµÙØØ©. **
إذا ÙØ³Ù ÙÙØ§ بعد ذÙÙ Ø ÙØ³ÙØªÙ Ù Ø³Ø Ù ØØªÙ٠اÙÙ Ø³ØªÙØ¯ Ø§ÙØØ§ÙÙ.
عÙ٠سبÙ٠اÙ٠ثاÙ:
<p>After one second the contents of this page will be replaced...</p>
<script>
// document.write after 1 second
// that's after the page loaded, so it erases the existing content
setTimeout(() => document.write('<b>...By this.</b>'), 1000);
</script>
ÙØ°Ø§ ÙÙÙ ØºÙØ± ÙØ§Ø¨Ù ÙÙØ§Ø³ØªØ®Ø¯Ø§Ù Ù٠٠رØÙØ© âØ¨Ø¹Ø¯ Ø§ÙØªØÙ ÙÙâ Ø عÙÙ Ø¹ÙØ³ طر٠DOM Ø§ÙØ£Ø®Ø±Ù Ø§ÙØªÙ ØªÙØ§ÙÙÙØ§Ùا Ø£Ø¹ÙØ§Ù.
ÙØ°Ø§ ÙÙ Ø§ÙØ¬Ø§Ùب Ø§ÙØ³ÙبÙ.
ÙÙØ§Ù Ø¬Ø§ÙØ¨ صاعد Ø£ÙØ¶Ø§. Ù
٠اÙÙØ§ØÙØ© اÙÙÙÙØ© Ø Ø¹ÙØ¯Ù
ا ÙØªÙ
استدعاء document.write Ø£Ø«ÙØ§Ø¡ ÙØ±Ø§Ø¡Ø© اÙÙ
ستعرض ÙÙ HTML (" تØÙÙÙ ") Ø ÙÙÙØªØ¨ Ø´ÙØ¦Ùا Ø ÙØ³ØªÙÙÙ٠اÙÙ
ستعرض تÙ
اÙ
ÙØ§ ÙÙ
ا ÙÙ ÙØ§Ù Ù
ÙØ¬ÙØ¯ÙØ§ ÙÙ Ø§ÙØ¨Ø¯Ø§ÙØ© Ø ÙÙ ÙØµ HTML.
ÙØ°ÙÙ ÙØ¹Ù ٠بسرعة ÙØ§Ø¦ÙØ© Ø ÙØ£ÙÙ ÙØ§ ÙÙØ¬Ø¯ * تعدÙÙ DOM * اÙ٠عÙÙØ©. ÙÙØªØ¨ ٠باشرة ÙÙ ÙØµ Ø§ÙØµÙØØ© Ø Ø¨ÙÙ٠ا ÙÙ ÙØªÙ Ø¨ÙØ§Ø¡ DOM بعد.
ÙØ°Ø§ إذا Ø§ØØªØ¬Ùا Ø¥ÙÙ Ø¥Ø¶Ø§ÙØ© اÙÙØ«Ùر ٠٠اÙÙØµ Ø¥ÙÙ HTML دÙÙØ§Ù ÙÙÙÙØ§ Ø ÙÙØÙ Ù٠٠رØÙØ© تØÙ ÙÙ Ø§ÙØµÙØØ© Ø ÙÙØ§Ùت Ø§ÙØ³Ø±Ø¹Ø© Ù ÙÙ Ø© Ø ÙÙØ¯ ÙØ³Ø§Ø¹Ø¯ ذÙÙ. ÙÙÙ Ù٠اÙÙØ§Ùع ÙØ§Ø¯Ø±Ø§ ٠ا تجت٠ع ÙØ°Ù اÙÙ ØªØ·ÙØ¨Ø§Øª. ÙØ¹Ø§Ø¯Ø© ٠ا ÙÙ ÙÙÙØ§ Ø±Ø¤ÙØ© ÙØ°Ù Ø§ÙØ·Ø±ÙÙØ© ÙÙ Ø§ÙØ¨Ø±Ø§Ù ج اÙÙØµÙØ© Ù٠جرد Ø£ÙÙØ§ ÙØ¯ÙÙ Ø©.
Ù ÙØ®Øµ
-
Ø·Ø±Ù Ø¥ÙØ´Ø§Ø¡ Ø§ÙØ¹Ùد Ø§ÙØ¬Ø¯Ùدة:
document.createElement (Ø¹ÙØ§Ù Ø©)â ÙÙØ´Ø¦ Ø¹ÙØµØ±Ùا Ø¨Ø§ÙØ¹Ùا٠ة اÙÙ ØØ¯Ø¯Ø© Ødocument.createTextNode (اÙÙÙÙ Ø©)â Ø¥Ùشاء Ø¹ÙØ¯Ø© ÙØµÙØ© (ÙØ§Ø¯Ø±Ùا ٠ا تستخد٠) Øelem.cloneNode (deep)â Ø§Ø³ØªÙساخ Ø§ÙØ¹Ùصر Ø Ø¥Ø°Ø§ ÙØ§Ùdeep == trueث٠٠ع Ø¬Ù ÙØ¹ Ø§ÙØ£ØÙاد.
-
Ø§ÙØ¥Ø¯Ø®Ø§Ù ÙØ§ÙÙÙ:
node.append (... nodes or strings)â Ø£Ø¯Ø®Ù ÙÙnodeØ Ù٠اÙÙÙØ§ÙØ© Ønode.prepend (... Ø§ÙØ¹Ùد Ø£Ù Ø§ÙØ³ÙاسÙ)â Ø£Ø¯Ø®Ù ÙÙØ§ÙØ¹ÙØ¯Ø©Ø ÙÙ Ø§ÙØ¨Ø¯Ø§ÙØ© Ønode.before (... nodes or strings)â- أدخ٠٠باشرة ÙØ¨ÙnodeØnode.after (... nodes or strings)â- أدخ٠٠باشرة بعدnodeØnode.replaceWith (... Ø§ÙØ¹Ùد Ø£Ù Ø§ÙØ³ÙاسÙ)â- Ø§Ø³ØªØ¨Ø¯Ø§ÙØ§ÙØ¹ÙØ¯Ø©.node.remove ()â- ÙÙ Ø¨Ø¥Ø²Ø§ÙØ©Ø§ÙØ¹ÙØ¯Ø©.
ÙØªÙ إدراج Ø§ÙØ³Ùاس٠اÙÙØµÙØ© âÙÙØµâ.
-
ÙÙØ§Ù Ø£ÙØ¶Ùا Ø·Ø±Ù âØ§Ù٠درسة اÙÙØ¯ÙÙ Ø©â:
اÙÙØ§Ùد. appendChild (Ø§ÙØ¹Ùدة)mother.insertBefore (Ø¹ÙØ¯Ø© Ø nextSibling)mother.removeChild (node)Ø§ÙØ£ØµÙ. إعادة Ù ÙØ§Ù Ø§ÙØ·ÙÙ (newElem Ø Ø¹ÙØ¯Ø©)
Ø¬Ù ÙØ¹ ÙØ°Ù Ø§ÙØ·Ø±Ù ØªÙØ±Ø¬Ø¹
Ø§ÙØ¹Ùدة. -
باÙÙØ¸Ø± Ø¥Ù٠بعض HTML ÙÙ
htmlØelem.insertAdjacentHTML (ØÙØ« Ø html)ÙÙØ¯Ø®ÙÙØ§ Ø¨ÙØ§Ø¡Ù عÙÙ ÙÙ٠ةأÙÙ:- âbeforebeginâ â- أدخÙâ html âÙØ¨Ùâ elem "٠باشرة٠Ø
- âafterbeginâ â- أدخÙâ html âÙÙâ elem "ÙÙ Ø§ÙØ¨Ø¯Ø§ÙØ© Ø
- âÙØ¨Ùâ â- أدخÙâ html âÙÙâ elem "Ø Ù٠اÙÙÙØ§ÙØ© Ø
- ââ Ø¨Ø¹Ø¯ ÙÙØ§ÙØ© ââ â Ø£Ø¯Ø®Ù âhtmlâ ٠باشرة٠بعد âelemâ.
ÙÙØ§Ù Ø£ÙØ¶Ùا Ø·Ø±Ù Ù Ø´Ø§Ø¨ÙØ© Ø
elem.insertAdjacentTextÙelem.insertAdjacentElementØ ÙØ§ÙØªÙ ØªÙØ¯Ø±Ø¬ Ø³ÙØ§Ø³Ù ÙØµÙØ© ÙØ¹Ùاصر Ø ÙÙÙÙ ÙØ§Ø¯Ø±Ùا ٠ا ÙØªÙ Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ§. -
ÙØ¥ÙØØ§Ù HTML Ø¨Ø§ÙØµÙØØ© ÙØ¨Ù Ø£Ù ÙÙØªÙÙ Ø§ÙØªØÙ ÙÙ:
document.write (html)
بعد تØÙ ÙÙ Ø§ÙØµÙØØ© تÙÙÙ ÙØ°Ù اÙÙ ÙØ§ÙÙ Ø© Ø¨Ù Ø³Ø Ø§ÙÙ Ø³ØªÙØ¯. ØºØ§ÙØ¨Ø§ ٠ا ÙÙØ¸Ø± Ø¥ÙÙÙØ§ Ù٠اÙÙØµÙص اÙÙØ¯ÙÙ Ø©.
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)