خصیت previousSibling XML DOM

تعریف و استفاده

previousSibling این خاصیت گره هم‌طبقه قبل‌تر انتخاب شده (گره قبل‌تر در یک سطح مشابه درخت) را برمی‌گرداند.

اگر چنین گره‌ای وجود ندارد، این خاصیت null را برمی‌گرداند.

راستای نوشتار

elementNode.previousSibling
نکات و یادداشت‌ها

توجه داشته باشید:Firefox و بیشتر مرورگرهای دیگر خالی یا خطوط جدید را به عنوان گره‌های متن در نظر می‌گیرند، در حالی که Internet Explorer این کار را نمی‌کند. بنابراین، در مثال‌های زیر از یک تابع برای بررسی نوع گره هم‌طبقه قبل‌تر استفاده می‌کنیم.

نقطه‌ای که به عنوان گره عناصر است nodeType برابر با 1 است، بنابراین اگر گره هم‌طبقه قبل‌تر این گره گره عناصر نباشد، به گره قبل‌تر حرکت می‌کند و بررسی می‌کند که آیا این گره گره عناصر است یا خیر. این کار ادامه خواهد داشت تا زمانی که گره هم‌طبقه قبل‌تر پیدا شود (باید گره عناصر باشد). به این ترتیب، نتیجه در تمام مرورگرها صحیح خواهد بود.

نکته:برای اطلاعات بیشتری در مورد تفاوت‌های بین مرورگرها، لطفاً به بخش DOM مرورگر در آموزش XML DOM مراجعه کنید.

مثال

مثال 1

کد زیر "books.xml" را به xmlDoc بارگذاری می‌کند و از نقطه قبل از اولین عنصر <author> استفاده می‌کند:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
   if (this.readyState == 4 && this.status == 200) {
       myFunction(this);
   }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
// بررسی نقطه قبلی برابر با نقطه والد
function get_previoussibling(n) {
    var x = n.previousSibling;
    while (x.nodeType != 1) {
        x = x.previousSibling;
    }
    return x;
}
function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName("author")[0];
    var y = get_previoussibling(x);
    document.getElementById("demo").innerHTML = x.nodeName + " = " +
    x.childNodes[0].nodeValue +
    "<br>برادر بعدی: " + y.nodeName + " = " +
    y.childNodes[0].nodeValue;
}

آزمایش کنید

مثال 2

استفاده از nextSibling برای بدست آوردن نقطه بعدی برابر با نقطه والد:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
// بررسی نقطه بعدی برابر با نقطه والد
function get_nextsibling(n) {
    var x = n.nextSibling;
    while (x.nodeType != 1) {
        x = x.nextSibling;
    }
    return x;
}
function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName("title")[0];
    var y = get_nextsibling(x);
    document.getElementById("demo").innerHTML = x.nodeName + " = " + 
    x.childNodes[0].nodeValue +
    "<br>برادر بعدی: " + y.nodeName + " = " + 
    y.childNodes[0].nodeValue;
}

آزمایش کنید