مетод insertBefore() در XML DOM
تعریف و استفاده
مетод insertBefore() یک نود فرزند جدید را در نود فرزند موجود قرار میدهد.
این روش نود فرزند جدید را برمیگرداند.
نحوه استفاده:
elementNode.insertBefore(new_node,existing_node)
پارامترها | توضیح |
---|---|
new_node | ضروری. نود جدیدی که باید قرار داده شود. |
existing_node | ضروری. نود موجود. نود جدید را در این نود قرار دهید. |
توضیحات و نکات:
توضیح:Internet Explorer نودهای خالی بین نودها را نادیده میگیرد (مثلاً کاراکترهای پاراگراف)، در حالی که Mozilla این کار را نمیکند. بنابراین، در مثالهای زیر از یک تابع برای بررسی نوع نود آخرین نود فرزند استفاده میکنیم.
نوع نود یک است، بنابراین اگر آخرین نود فرزند، نود عناصر نیست، به نود قبلی حرکت میکند و بررسی میکند که آیا این نود، نود عناصر است یا خیر. این فرآیند تا زمانی که آخرین نود عناصر فرزند پیدا شود ادامه دارد. با این روش، در Internet Explorer و Mozilla نتایج صحیحی به دست میآید.
برای اطلاعات بیشتر در مورد تفاوتهای بین مرورگرهای IE و Mozilla، لطفاً به آموزش XML DOM در CodeW3C.com مراجعه کنید بخش مرورگر DOM این بخش.
مثال
در تمام مثالها، ما از فایل XML استفاده خواهیم کرد books.xml، و همچنین تابعهای JavaScript loadXMLDoc()。
این بخش از کد یک نود جدید <book> ایجاد میکند و آن را قبل از آخرین نود <book> در مستند قرار میدهد:
//check if the last childnode is an element node
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));