أسلوب insertBefore() في XML DOM
تعريف والاستخدام
يُضيف أسلوب insertBefore() عقدة فرعية جديدة قبل عقدة فرعية موجودة.
يحصل هذا الأسلوب على العنصر الفرعي الجديد.
الجملة:
elementNode.insertBefore(new_node,existing_node)
المعلمات | وصف |
---|---|
new_node | مطلوب. العنصر الجديد. العنصر الذي سيتم إضافته. |
existing_node | مطلوب. العنصر الحالي. أضف عقدة جديدة قبل هذا العنصر. |
نصائح وملاحظات:
ملاحظة:سيقوم متصفح Internet Explorer بتخطي نودات النص التي تُتولد بين العناصر (مثل رموز النسخة الفارغة)، بينما لا يقوم Mozilla بذلك. لذلك، سنستخدم في المثال التالي وظيفة لتحقق من نوع العنصر للآخرين الفرعية.
نوع العنصر هو 1، لذا إذا لم يكن آخر عنصر فرعي عنصرًا، فإنه ينتقل إلى العنصر السابق ويحقق ما إذا كان هذا العنصر عنصرًا. هذه العملية ستستمر حتى العثور على آخر عنصر فرعي هو عنصر. بهذه الطريقة، سيتم الحصول على النتيجة الصحيحة في Internet Explorer وMozilla.
للحصول على معلومات أكثر حول الاختلافات بين متصفحات Internet Explorer وMozilla، يرجى زيارة تعليمات XML DOM على CodeW3C.com مستعرض DOM هذه الفقرة.
مثال
في جميع الأمثلة، سنستخدم ملفات XML books.xml،وإضافة إلى وظائف الـ JavaScript loadXMLDoc().
النص المطلوب لإنشاء عقدة جديدة <book> ووضعها قبل آخر عقدة <book> في المستند:
//تحقق مما إذا كان العقدة الأخيرة هي عقدة عنصر
function get_lastchild(n)
{
x=n.lastChild;
while (x.nodeType!=1)
{
x=x.previousSibling;
}
return x;
}
xmlDoc=loadXMLDoc("books.xml");
newNode=xmlDoc.createElement("book");
newTitle=xmlDoc.createElement("title");
newText=xmlDoc.createTextNode("A Notebook");
newTitle.appendChild(newText);
newNode.appendChild(newTitle);
xmlDoc.documentElement.insertBefore(newNode,get_lastchild(x));