يمكن التنقل العقد باستخدام العلاقات العقدة.
التنقل DOM العقد
الحصول على العقد في شجرة العقدة عبر العلاقة بين العقد، وغالبا ما تسمى "navigating nodes" .
في XML DOM، وتعرف العلاقات عقدة من الخصائص إلى العقد:
- parentNode
- childNodes
- firstChild
- lastChild
- nextSibling
- previousSibling
وتوضح الصورة التالية جزء من شجرة العقدة، والعلاقة بين العقد في books.xml :
DOM - عقدة الرئيسي
كل العقد وبالضبط العقدة الأصل واحد. التعليمة البرمجية التالية يتنقل إلى عقدة الأم ل <book> :
مثال
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var x = xmlDoc.getElementsByTagName("book")[0];
document.getElementById("demo").innerHTML = x.parentNode.nodeName;
}
انها محاولة لنفسك » وأوضح سبيل المثال:
- تحميل " books.xml " إلى xmlDoc
- الحصول على أول <book> العنصر
- الناتج اسم عقدة العقدة الأصل من "x"
تجنب العقد نص فارغ
فايرفوكس، وبعض المتصفحات الأخرى، وعلاج خالي المساحات البيضاء أو خطوط جديدة كما نص العقد، لن إنترنت إكسبلورر.
هذا يسبب مشكلة عند استخدام خصائص: firstChild، lastChild، nextSibling، previousSibling.
لتجنب التنقل إلى النص العقد فارغة (المسافات والخط الجديد أحرف بين العقد عنصر)، ونحن نستخدم وظيفة أن يتحقق نوع العقدة:
function get_nextSibling(n)
{
var y = n.nextSibling;
while (y.nodeType! = 1)
{
y = y.nextSibling;
}
return y;
}
وظيفة فوق يتيح لك استخدام get_nextSibling( node ) بدلا من خاصية node .nextSibling.
وأوضح الرمز:
العقد عنصر من النوع 1. إذا كانت العقدة الأخوة ليست عقدة عنصر، فإنه ينتقل إلى العقد المقبل حتى يتم العثور على عقدة عنصر. بهذه الطريقة، فإن النتيجة تكون هي نفسها في كل من إنترنت إكسبلورر وفايرفوكس.
الحصول على عنصر الطفل الأولى
يعرض التعليمة البرمجية التالية عقدة عنصر الأولى من أول <book> :
مثال
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
myFunction(xhttp);
}
};
xhttp.open("GET",
"books.xml", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
document.getElementById("demo").innerHTML = x.nodeName;
}
//check if
the first node is an element node
function get_firstChild(n) {
var y = n.firstChild;
while (y.nodeType != 1) {
y = y.nextSibling;
}
return y;
}
</script>
</body>
</html>
الناتج:
title
انها محاولة لنفسك » وأوضح سبيل المثال:
- تحميل " books.xml " إلى xmlDoc
- استخدام وظيفة get_firstChild في أول <book> عقدة عنصر للحصول على عقدة الطفل الأولى التي هو عقدة عنصر
- الناتج اسم عقدة عقدة الطفل الأولى التي هو عقدة عنصر
المزيد من الأمثلة
lastChild()
يستخدم هذا المثال lastChild() طريقة وظيفة مخصصة للحصول على مشاركة عقدة تابعة للعقدة
nextSibling()
يستخدم هذا المثال nextSibling() طريقة وظيفة مخصصة للحصول على عقدة الأخوة التالية من عقدة
previousSibling()
يستخدم هذا المثال previousSibling() طريقة وظيفة مخصصة للحصول على عقدة الأخوة السابقة من عقدة