با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، در بخش قبلی مبحث Navigation در جاوا اسکریپت و سلسله مراتب عناصر html و ارتباط بین آن ها را شرح دادیم، همچنین چگونگی دستیابی به عناصر html با استفاده از خصوصیات node را نیز بررسی کردیم، شاید این سوال برای شما پیش آمده باشد که آیا می توان با استفاده از خصوصیات node ، گره هایی یا عناصر html را در مکان خاصی از درخت node اضافه یا حذف کرد، بله این قابلیت نیز در جاوا اسکریپت وجود دارد، فقط کافیست با مبحث چگونگی کار با node ها در جاوا اسکریپت آشنایی داشته باشید.
در ادامه ی مبحث با فراگیری چگونگی کار با node ها در جاوا اسکریپت در واقع با یک روش اضافه یا حذف عناصر html در جاوا اسکریپت آشنا خواهید شد.
برای اضافه کردن یک عنصر جدید، ابتدا باید عنصری (گره عنصر) را ایجاد کرده و سپس آن را به یک عنصر موجود اضافه کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> var para = document.createElement("p"); var node = document.createTextNode("This is new."); para.appendChild(node); var element = document.getElementById("div1"); element.appendChild(para); </script> |
تشریح مثال فوق :
کد زیر یک عنصر <p> جدید ایجاد می کند :
1 | var para = document.createElement("p"); |
برای اضافه کردن متن به عنصر <p>، ابتدا باید یک گره متنی ایجاد کنید. این کد یک گره متنی ایجاد می کند:
1 | var node = document.createTextNode("This is a new paragraph."); |
سپس باید text node را به عنصر <p>اضافه کنید:
1 | para.appendChild(node); |
در نهایت شما باید عنصر جدید را به یک عنصر موجود اضافه کنید.
این کد عنصر موجود را پیدا می کند:
1 | var element = document.getElementById("div1"); |
این کد عنصر جدید را به عنصر موجود اضافه می کند:
1 | element.appendChild(para); |
متد ()appendChild در مثال قبلی، عنصر جدید را به عنوان آخرین فرزند عنصر والد اضافه کرد.
اگر شما نمی خواهید که شما می توانید از متد ()insertBefore استفاده کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> var para = document.createElement("p"); var node = document.createTextNode("This is new."); para.appendChild(node); var element = document.getElementById("div1"); var child = document.getElementById("p1"); element.insertBefore(para, child); </script> |
برای حذف یک عنصر html موجود، باید عنصر والد آن را بدانید :
1 2 3 4 5 6 7 8 9 10 | <div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> var parent = document.getElementById("div1"); var child = document.getElementById("p1"); parent.removeChild(child); </script> |
نکته : متد ()node.remove در هیچیک از نسخه های Internet Explorer کار نمی کند.
تشریح مثال فوق :
کد HTML زیر شامل یک عنصر <div> و دو عنصر فرزند (دو عنصر <p>) می باشد:
1 2 3 4 | <div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> |
پیدا کردن عنصری با خصوصیت “id=”div1 :
1 | var parent = document.getElementById("div1"); |
پیدا کردن عنصر <p> که ویژگی “id=”p1 دارد :
1 | var child = document.getElementById("p1"); |
حذف فرزند از عنصر والد :
1 | parent.removeChild(child); |
خوب است که بتوانیم عنصری را بدون اشاره به والدین حذف کنیم.
اما متاسفانه برای حذف یک عنصر در جاوا اسکریپت باید عنصر والد آن را بدانیم.
در اینجا یک راه حل معمول وجود دارد: پیدا کردن فرزندی که می خواهید حذف کنید، و از ویژگی parentNode خود برای پیدا کردن والدین استفاده کنید:
1 2 | var child = document.getElementById("p1"); child.parentNode.removeChild(child); |
برای جایگزینی یک عنصر html از متد ()replaceChild استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> var para = document.createElement("p"); var node = document.createTextNode("This is new."); para.appendChild(node); var parent = document.getElementById("div1"); var child = document.getElementById("p1"); parent.replaceChild(para, child); </script> |
در بخش قبلی با مبحث کار با درخت node عناصر html در جاوا اسکریپت آشنا شدیم. و چگونگی دستیابی به عناصر html مرتبط با عنصر انتخاب شده در جاوا اسکریپت را نیز بررسی کردیم. در ادامه . تکمیل این مباحث، در این بخش نیز به بررسی چگونگی کار با node ها در جاوا اسکریپت پرداختیم.